From aacc3fa98842a475c5fd6d0f102a341ec6ed4b69 Mon Sep 17 00:00:00 2001 From: hgn Date: Mon, 13 Dec 2021 05:31:09 +0000 Subject: [PATCH] all campaign levels are done --- fishladder.c | 30 +++++++---- fishladder_resources.h | 87 ++++++++++++++++++-------------- maps/cmp_grad.map | 18 +++++++ maps/{sort.map => cmp_i01.map} | 0 maps/{thirds.map => cmp_i02.map} | 2 - maps/cmp_secret.map | 18 +++++++ 6 files changed, 103 insertions(+), 52 deletions(-) create mode 100644 maps/cmp_grad.map rename maps/{sort.map => cmp_i01.map} (100%) rename maps/{thirds.map => cmp_i02.map} (91%) create mode 100644 maps/cmp_secret.map 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/sort.map b/maps/cmp_i01.map similarity index 100% rename from maps/sort.map rename to maps/cmp_i01.map diff --git a/maps/thirds.map b/maps/cmp_i02.map similarity index 91% rename from maps/thirds.map rename to maps/cmp_i02.map index 4111bef..9794f43 100644 --- a/maps/thirds.map +++ b/maps/cmp_i02.map @@ -15,7 +15,5 @@ ## ##; ## ##; ## ##; -## ##; -## ##; ##########+##########;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 +#####################; -- 2.25.1