X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=fishladder_resources.h;h=5851b5e3bb282485c95e9464cde07804c8932536;hb=5293bf2e9c4f30d5b01f1e1638c00509c1674768;hp=1a56f549739cf6512013423898378cc2b32533e5;hpb=4694f19706f5176135b06329773ecd7e23aa2c5b;p=fishladder.git diff --git a/fishladder_resources.h b/fishladder_resources.h index 1a56f54..5851b5e 100644 --- a/fishladder_resources.h +++ b/fishladder_resources.h @@ -64,6 +64,14 @@ sound/random_07.ogg\0\ sound/random_08.ogg\0" }; +sfx_set audio_clicks = +{ + .sources = "\ +sound/click_a.ogg\0\ +sound/click_b.ogg\0\ +sound/click_c.ogg\0" +}; + // One two or three layers of rolling noise sfx_system audio_system_balls_rolling = { @@ -92,6 +100,12 @@ sfx_system audio_system_balls_extra = .name = "Balls Extra" }; +sfx_system audio_system_ui = +{ + .vol = 1.f, .ch = 1, .vol_src = &audio_volume_sfx, + .name = "UI" +}; + ui_colourset ui_fl_colours = { .main = 0xff807373, .hover = 0xff918484, @@ -119,6 +133,7 @@ static void resource_load_main(void) sfx_set_init( &audio_splitter, NULL ); sfx_set_init( &audio_rolls, NULL ); sfx_set_init( &audio_random, NULL ); + sfx_set_init( &audio_clicks, NULL ); } static void resource_free_main(void) @@ -129,6 +144,7 @@ static void resource_free_main(void) sfx_set_free( &audio_splitter ); sfx_set_free( &audio_rolls ); sfx_set_free( &audio_random ); + sfx_set_free( &audio_clicks ); } // SHADERS @@ -665,7 +681,20 @@ static struct cmp_level cmp_levels_tutorials[] = static struct cmp_level cmp_levels_basic[] = { - // r1 + // r2 GM + { + .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!", + + ._unlock = 7, + ._linked = 3 + }, + // r1 GM { .serial_id = 3, .title = "SUBDIVISION 1", @@ -674,19 +703,18 @@ static struct cmp_level cmp_levels_basic[] = "dividing up the input and recombining it.", ._linked = 4, - ._unlock = 6 + ._unlock = 5 }, - // r1 + // r1 GM { .serial_id = 4, .title = "SUBDIVISION 2", .map_name = "cmp_b02", .description = "", - ._linked = 5, ._unlock = 7 }, - // r1 + // r1 GM { .serial_id = 5, .title = "RESTRUCTURE", @@ -696,14 +724,7 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 8 }, - { - .serial_id = 6, - .title = "SERIALIZE", - .map_name = "cmp_b04", - .description = "Merge and sort", - - ._unlock = 7 - }, + // r2 GM { .serial_id = 7, .title = "PATTERNS 1", @@ -712,40 +733,16 @@ static struct cmp_level cmp_levels_basic[] = ._linked = 8 }, + // r2 GM { .serial_id = 8, .title = "PATTERNS 2", .map_name = "cmp_b06", .description = "Replicate MORE", - ._unlock = 9 - }, - { - .serial_id = 9, - .title = "MIGHTY CONSUMER", - .map_name = "cmp_b07", - .description = "Build a greedy system", - - ._linked = 10, - ._unlock = 11 - }, - { - .serial_id = 10, - .title = "ENCRYPTED 1", - .map_name = "cmp_b08", - .description = "Some configurations may not be valid", - - ._unlock = 15 - }, - { - .serial_id = 11, - .title = "REVERSE", - .map_name = "cmp_b09", - .description = "Reverse the incoming order. Always length 4", - ._unlock = 15 }, - // r2 + // r2 GM { .serial_id = 15, .title = "PRINCIPLE 5", @@ -761,7 +758,7 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 16, .is_tutorial = 1 }, - // r2 + // r2 GM { .serial_id = 16, .title = "ROUTING PROBLEM", @@ -770,33 +767,54 @@ static struct cmp_level cmp_levels_basic[] = "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 + }, + // r2 GM + { + .serial_id = 9, + .title = "MIGHTY CONSUMER", + .map_name = "cmp_b07", + .description = "Build a greedy system", + + ._linked = 10, + ._unlock = 11 + }, + { + .serial_id = 10, + .title = "ENCRYPTED 1", + .map_name = "cmp_b08", + .description = "Some configurations may not be valid", + ._unlock = 17 }, + // r2 GM + { + .serial_id = 11, + .title = "REVERSE", + .map_name = "cmp_b09", + .description = "Reverse the incoming order. Always length 4", + + ._unlock = 17 + }, + // r2 GM { .serial_id = 17, .title = "PRINCIPLE 6", .map_name = "cmp_b11", .description = - "While hovering over a simple tile peice, right click and\n" - "drag to start creating a wire. These can be connected to\n" - "the left, or right recieving pins of a Twisty Turny(TM).\n" - "\n" - "Once connected, the Twisty Turny(TM) will no longer\n" - "'flip flop' as marbles run through them, but instead be\n" - "et to left or right rotating only. As indicated by the\n" - "status arrow beneath them\n" - "\n" - "When the left or right slot is triggered, the Twisty\n" - "Turny(TM) will switch modes according to that input.\n" + "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" - "Trigger wires apply instantaneously, however if both the\n" - "left and right inputs are recieved at the same time,\n" - "this results in no operation being performed, and no\n" - "state changes take place in the Twisty Turny(TM)\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.", ._unlock = 18, .is_tutorial = 1 }, + // r2 GM { .serial_id = 18, .title = "NOT GATE",