From: hgn Date: Mon, 13 Dec 2021 05:31:09 +0000 (+0000) Subject: all campaign levels are done X-Git-Url: https://skaterift.com/git/?a=commitdiff_plain;h=aacc3fa98842a475c5fd6d0f102a341ec6ed4b69;p=fishladder.git all campaign levels are done --- diff --git a/fishladder.c b/fishladder.c index 412182c..d4640be 100644 --- a/fishladder.c +++ b/fishladder.c @@ -564,7 +564,7 @@ static int map_load( const char *str, const char *name ) struct cell_terminal *terminal = &world.io[ reg_start ]; struct terminal_run *run = &terminal->runs[ terminal->run_count-1 ]; - if( *c >= 'a' && *c <= 'z' ) + if( (*c >= 'a' && *c <= 'z') || *c == ' ' ) { run->conditions[ run->condition_count ++ ] = *c; } @@ -1611,11 +1611,15 @@ void vg_update(void) { if( world.sim_frame < term->runs[ world.sim_run ].condition_count ) { + char emit = term->runs[ world.sim_run ].conditions[ world.sim_frame ]; + if( emit == ' ' ) + continue; + struct fish *fish = &world.fishes[ world.num_fishes ]; v2i_copy( term->pos, fish->pos ); fish->state = k_fish_state_alive; - fish->payload = term->runs[ world.sim_run ].conditions[ world.sim_frame ]; + fish->payload = emit; struct cell *cell_ptr = pcell( fish->pos ); @@ -2340,14 +2344,18 @@ void vg_render(void) if( is_input ) { - colour_code_v3( term->runs[k].conditions[j], dot_colour ); - glUniform4fv( SHADER_UNIFORM( shader_tile_colour, "uColour" ), 1, dot_colour ); - - // Draw filled if tick not passed, draw empty if empty - if( (world.sim_frame > j && world.sim_run >= k) || world.sim_run > k ) - draw_mesh( empty_start, empty_count ); - else - draw_mesh( filled_start, filled_count ); + char cc = term->runs[k].conditions[j]; + if( cc != ' ' ) + { + colour_code_v3( cc, dot_colour ); + glUniform4fv( SHADER_UNIFORM( shader_tile_colour, "uColour" ), 1, dot_colour ); + + // Draw filled if tick not passed, draw empty if empty + if( (world.sim_frame > j && world.sim_run >= k) || world.sim_run > k ) + draw_mesh( empty_start, empty_count ); + else + draw_mesh( filled_start, filled_count ); + } } else { @@ -2509,7 +2517,7 @@ void vg_ui(void) pack_selection = i; ui_global_ctx.cursor[1] += 2; - gui_text( pack_is_unlocked? pack_infos[i].name: "", 4, 0 ); + gui_text( pack_is_unlocked? pack_infos[i].name: "???", 4, 0 ); gui_end_right(); gui_reset_colours(); diff --git a/fishladder_resources.h b/fishladder_resources.h index 77601be..7e78aa4 100644 --- a/fishladder_resources.h +++ b/fishladder_resources.h @@ -640,7 +640,8 @@ static struct cmp_level cmp_levels_tutorials[] = .serial_id = 0, .title = "PRINCIPLE 1", .map_name = "cmp_t01", - .description = "Utilize basic transport methods", + .description = + "Utilize basic transport methods", ._unlock = 1, .is_tutorial = 1 @@ -650,8 +651,9 @@ static struct cmp_level cmp_levels_tutorials[] = .serial_id = 1, .title = "PRINCIPLE 2", .map_name = "cmp_t02", - .description = "Utilize the twisty turny(TM) piece to split\n" - "the marble stream into two", + .description = + "Utilize the twisty turny(TM) piece to split the marble\n" + "stream into two", ._unlock = 2, .is_tutorial = 1, @@ -661,7 +663,8 @@ static struct cmp_level cmp_levels_tutorials[] = .serial_id = 2, .title = "PRINCIPLE 3", .map_name = "cmp_t03", - .description = "Merge transport into one", + .description = + "Merge transport into one", ._unlock = 12, .is_tutorial = 1 @@ -671,8 +674,9 @@ static struct cmp_level cmp_levels_tutorials[] = .serial_id = 12, .title = "PRINCIPLE 4", .map_name = "cmp_t04", - .description = "Some stages require multiple runs to succeed\n" - "in order to pass", + .description = + "Some stages require multiple runs to succeed in order to\n" + "pass", ._unlock = 3, .is_tutorial = 1 @@ -686,10 +690,10 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 6, .title = "PATCH", .map_name = "cmp_b04", - .description = "For some reason, the division module our\n" - "intern built for us is sending twice as many\n" - "yellows as needed. We need to send the\n" - "excess to be recycled!", + .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 @@ -699,8 +703,9 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 3, .title = "SUBDIVISION 1", .map_name = "cmp_b01", - .description = "Sometimes getting the desired amount takes\n" - "dividing up the input and recombining it.", + .description = + "Sometimes getting the desired amount takes dividing up\n" + "the input and recombining it.", ._linked = 4, ._unlock = 5 @@ -710,7 +715,8 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 4, .title = "SUBDIVISION 2", .map_name = "cmp_b02", - .description = "", + .description = + "", ._unlock = 7 }, @@ -719,8 +725,9 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 5, .title = "RESTRUCTURE", .map_name = "cmp_b03", - .description = "It is possible to swap these values using\n" - "simple division and addition.", + .description = + "It is possible to swap these values using simple\n" + "division and addition.", ._unlock = 8 }, @@ -729,7 +736,8 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 7, .title = "PATTERNS 1", .map_name = "cmp_b05", - .description = "Replicate", + .description = + "Replicate", ._linked = 8 }, @@ -738,7 +746,8 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 8, .title = "PATTERNS 2", .map_name = "cmp_b06", - .description = "Replicate MORE", + .description = + "Replicate MORE", ._unlock = 15 }, @@ -774,7 +783,8 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 9, .title = "MIGHTY CONSUMER", .map_name = "cmp_b07", - .description = "Build a greedy system", + .description = + "Build a greedy system", ._linked = 10, ._unlock = 11 @@ -783,7 +793,8 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 10, .title = "SHIFT", .map_name = "cmp_b08", - .description = "", + .description = + "", ._unlock = 17 }, @@ -792,7 +803,8 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 11, .title = "REVERSE", .map_name = "cmp_b09", - .description = "Reverse the incoming order. Always length 4", + .description = + "Reverse the incoming order. Always length 4", ._unlock = 17 }, @@ -837,19 +849,22 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 20 }, + // r2 GM { .serial_id = 20, .title = "QUALIFICATION PROJECT", - .map_name = "cmp_grad", - .description = - "There's no instructions here, resolve and complete this\n" - "task to qualify yourself as an official marble engineer", + .map_name = "cmp_xor", + .description = + "Significantly more complicated than an AND or NOT gate,\n" + "but possible.", + ._unlock = 13 } }; static struct cmp_level cmp_levels_grad[] = { + // r2 { .serial_id = 13, .title = "SORT", @@ -861,6 +876,7 @@ static struct cmp_level cmp_levels_grad[] = ._linked = 14 }, + // r2 { .serial_id = 14, .title = "THIRDS", @@ -872,36 +888,29 @@ static struct cmp_level cmp_levels_grad[] = ._linked = 21 }, + // r2 GM { .serial_id = 21, - .title = "XOR CHIP", - .map_name = "cmp_xor", + .title = "SIMPLE ADDITION", + .map_name = "cmp_grad", .description = - "Significantly more complicated than an AND or NOT gate,\n" - "but possible.", + "Take the amount of yellows coming in, and add them\n" + "together. Send your result using the stream of blues.", + ._linked = 22 }, + // r2 GM { .serial_id = 22, .title = "SECRET CODE", .map_name = "cmp_secret", .description = - "Only one input should send an unlock signal marble to\n" - "the output.\n" - "The code: 100110" + "" } }; #define NUM_CAMPAIGN_LEVELS (vg_list_size( cmp_levels_tutorials ) + vg_list_size( cmp_levels_basic ) + vg_list_size( cmp_levels_grad )) -/* -static struct -{ -} -career_local = -{ -};*/ - static struct serializable_set { struct cmp_level *pack; diff --git a/maps/cmp_grad.map b/maps/cmp_grad.map new file mode 100644 index 0000000..dbd51c0 --- /dev/null +++ b/maps/cmp_grad.map @@ -0,0 +1,18 @@ +#####################; +##########-##########;cccc:cccc:ccc:cc +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +####+##+########+####;a:aa:aa:a,aaa:aa:a:a,cccc:cccc:cccc:cccc +#####################; diff --git a/maps/cmp_i01.map b/maps/cmp_i01.map new file mode 100644 index 0000000..07ab324 --- /dev/null +++ b/maps/cmp_i01.map @@ -0,0 +1,16 @@ +################; +####-######-####;aa:a:a:aa,bbb:bbb:bb:bbbb +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +###+#######+####;aa:bbb:bb:aa,bbb:a:a:bbbb +################; diff --git a/maps/cmp_i02.map b/maps/cmp_i02.map new file mode 100644 index 0000000..9794f43 --- /dev/null +++ b/maps/cmp_i02.map @@ -0,0 +1,19 @@ +#####################; +#######-##-##-#######;a:aa:aaa,a:aa:aaa,a:aa:aaa +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +##########+##########;aaa:aaaaaa:aaaaaaaaa +#####################; diff --git a/maps/cmp_secret.map b/maps/cmp_secret.map new file mode 100644 index 0000000..c2801e0 --- /dev/null +++ b/maps/cmp_secret.map @@ -0,0 +1,18 @@ +#####################; +##########-##########;:c:: +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +## ##; +####+###########+####;aa a:a aa:a a :aaaa,c:c:c:c +#####################; diff --git a/maps/sort.map b/maps/sort.map deleted file mode 100644 index 07ab324..0000000 --- a/maps/sort.map +++ /dev/null @@ -1,16 +0,0 @@ -################; -####-######-####;aa:a:a:aa,bbb:bbb:bb:bbbb -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -###+#######+####;aa:bbb:bb:aa,bbb:a:a:bbbb -################; diff --git a/maps/thirds.map b/maps/thirds.map deleted file mode 100644 index 4111bef..0000000 --- a/maps/thirds.map +++ /dev/null @@ -1,21 +0,0 @@ -#####################; -#######-##-##-#######;a:aa:aaa,a:aa:aaa,a:aa:aaa -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -## ##; -##########+##########;aaa:aaaaaa:aaaaaaaaa -#####################;