X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=fishladder.c;h=becb812d88b5bb9b48a800ad8846962b2f7509f6;hb=fefce08c7eecf3eb66553825ba421b5b81dae5eb;hp=8b64ffc0053183621c0ab84bfb6c127656a80dd7;hpb=3dc48e526037a49c2ffd1210243f57afc1fafbb2;p=fishladder.git diff --git a/fishladder.c b/fishladder.c index 8b64ffc..becb812 100644 --- a/fishladder.c +++ b/fishladder.c @@ -1,5 +1,6 @@ // Copyright (C) 2021 Harry Godden (hgn) - All Rights Reserved +//#define VG_CAPTURE_MODE #define VG_STEAM #define VG_STEAM_APPID 1218140U #include "vg/vg.h" @@ -701,6 +702,20 @@ static int map_load( const char *str, const char *name ) px[3] = 0; } } + + // Level selection area + + for( int y = 16+2; y < 16+world.h-2; y ++ ) + { + for( int x = 14; x < 16; x ++ ) + { + u8 *px = &info_buffer[((y*64)+x)*4]; + px[0] = 0x10; + } + } + + info_buffer[(((16+world.h-3)*64)+world.w+16-1)*4] = 0x30; + info_buffer[(((16+world.h-2)*64)+world.w+16-1)*4] = 0x30; // Random walks.. kinda for( int i = 0; i < arrlen(world.io); i ++ ) @@ -1342,6 +1357,9 @@ void vg_update(void) world.sim_target = (int)floorf(world.sim_internal_time); + int success_this_frame = 0; + int failure_this_frame = 0; + while( world.sim_frame < world.sim_target ) { sfx_set_playrnd( &audio_random, &audio_system_balls_switching, 0, 8 ); @@ -1389,7 +1407,16 @@ void vg_update(void) { struct terminal_run *run = &term->runs[ world.sim_run ]; if( run->recv_count < vg_list_size( run->recieved ) ) + { + if( fish->payload == run->conditions[ run->recv_count ] ) + success_this_frame = 1; + else + failure_this_frame = 1; + run->recieved[ run->recv_count ++ ] = fish->payload; + } + else + failure_this_frame = 1; break; } @@ -1735,6 +1762,21 @@ void vg_update(void) world.sim_frame ++; } + // Sounds + if( failure_this_frame ) + { + sfx_set_play( &audio_tones, &audio_system_balls_extra, 0 ); + } + else if( success_this_frame ) + { + static int succes_counter = 0; + + sfx_set_play( &audio_tones, &audio_system_balls_extra, 1+(succes_counter++) ); + + if( succes_counter == 7 ) + succes_counter = 0; + } + // Position update // ===================================================================================================== @@ -1905,6 +1947,7 @@ static void wbutton_run( enum e_world_button btn_name ) struct cell_button *btn = &world.buttons[btn_name]; // Interaction + int tex_offset = 0; int is_hovering = (world.tile_x == world.w-1 && world.tile_y == world.h-btn_name-2)?1:0; if( vg_get_button_up( "primary" ) && is_hovering ) @@ -1983,6 +2026,13 @@ static void wbutton_run( enum e_world_button btn_name ) btn->light = vg_lerpf( btn->light, btn->light_target, vg_time_delta*26.0f ); // Draw + if( btn_name == k_world_button_sim && world.buttons[ k_world_button_sim ].pressed ) + { + if( world.buttons[ k_world_button_pause ].pressed ) + tex_offset = 3; + else + tex_offset = 2; + } v4f final_colour; v3_copy( button_colours[ btn_name ], final_colour ); @@ -1991,7 +2041,7 @@ static void wbutton_run( enum e_world_button btn_name ) glUniform4f( SHADER_UNIFORM( shader_buttons, "uOffset" ), world.w-1, world.h-btn_name-2, - (float)btn_name, + (float)(btn_name+tex_offset), 3.0f ); glUniform4fv( SHADER_UNIFORM( shader_buttons, "uColour" ), 1, final_colour ); @@ -2516,6 +2566,7 @@ ui_data; void vg_ui(void) { + /* // UI memory static int pack_selection = 0; static struct pack_info @@ -2557,7 +2608,7 @@ void vg_ui(void) gui_capture_mouse( 9999 ); gui_fill_rect( ui_global_ctx.cursor, 0xff5a4e4d ); - gui_text( "ASSIGNMENTS", 8, 0 ); + gui_text( "ASSIGNMENTS", 32, 0 ); ui_global_ctx.cursor[1] += 30; ui_global_ctx.cursor[3] = 25; @@ -2578,7 +2629,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: "???", 24, 0 ); gui_end_right(); gui_reset_colours(); @@ -2650,18 +2701,18 @@ void vg_ui(void) } ui_global_ctx.override_colour = 0xffffffff; - gui_text( lvl_info->title, 6, 0 ); + gui_text( lvl_info->title, 24, 0 ); ui_global_ctx.cursor[1] += 18; - gui_text( lvl_info->completed_score>0? "passed": "incomplete", 4, 0 ); + gui_text( lvl_info->completed_score>0? "passed": "incomplete", 24, 0 ); } else { gui_button( 2 + i ); ui_global_ctx.override_colour = 0xff786f6f; - gui_text( "???", 6, 0 ); + gui_text( "???", 24, 0 ); ui_global_ctx.cursor[1] += 18; - gui_text( "locked", 4, 0 ); + gui_text( "locked", 24, 0 ); } gui_end_down(); @@ -2691,7 +2742,7 @@ void vg_ui(void) gui_fill_rect( ui_global_ctx.cursor, 0xff5a4e4d ); ui_global_ctx.cursor[1] += 4; - gui_text( ui_data.level_selected->title, 6, 0 ); + gui_text( ui_data.level_selected->title, 24, 0 ); ui_global_ctx.cursor[1] += 30; ui_rect_pad( ui_global_ctx.cursor, 8 ); @@ -2703,11 +2754,11 @@ void vg_ui(void) } gui_end_down(); - ui_text_use_paragraph( &ui_global_ctx ); + //ui_text_use_paragraph( &ui_global_ctx ); ui_global_ctx.cursor[1] += 2; - gui_text( ui_data.level_selected->description, 5, 0 ); - ui_text_use_title( &ui_global_ctx ); + gui_text( ui_data.level_selected->description, 16, 0 ); + //ui_text_use_title( &ui_global_ctx ); // Buttons at the bottom ui_global_ctx.cursor[3] = 25; @@ -2720,7 +2771,7 @@ void vg_ui(void) { ui_data.level_selected = NULL; } - gui_text( "BACK", 6, k_text_alignment_center ); + gui_text( "BACK", 24, k_text_alignment_center ); gui_end(); gui_align_right(); @@ -2734,7 +2785,7 @@ void vg_ui(void) ui_global_ctx.override_colour = 0xff888888; - gui_text( "RESTORE SOLUTION", 6, k_text_alignment_center ); + gui_text( "RESTORE SOLUTION", 24, k_text_alignment_center ); gui_end_right(); ui_global_ctx.override_colour = 0xffffffff; } @@ -2754,7 +2805,7 @@ void vg_ui(void) ui_data.leaderboard_show = 0; } } - gui_text( "PLAY", 6, k_text_alignment_center ); + gui_text( "PLAY", 24, k_text_alignment_center ); gui_end(); } @@ -2772,7 +2823,7 @@ void vg_ui(void) gui_new_node(); { gui_fill_rect( ui_global_ctx.cursor, 0xff5a4e4d ); - gui_text( "FRIEND LEADERBOARD", 6, 0 ); + gui_text( "FRIEND LEADERBOARD", 24, 0 ); } gui_end_down(); @@ -2793,7 +2844,7 @@ void vg_ui(void) // 1,2,3 ... static const char *places[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; - gui_text( places[i], 7, 0 ); + gui_text( places[i], 24, 0 ); ui_global_ctx.cursor[0] += 32; struct leaderboard_player *player = &ui_data.leaderboard_players[i]; @@ -2809,12 +2860,12 @@ void vg_ui(void) gui_end_right(); // Players name - gui_text( player->player_name, 7, 0 ); + gui_text( player->player_name, 24, 0 ); ui_global_ctx.cursor[2] = 50; gui_align_right(); - gui_text( player->score_text, 7, k_text_alignment_right ); + gui_text( player->score_text, 24, k_text_alignment_right ); } gui_end_down(); @@ -2824,6 +2875,7 @@ void vg_ui(void) gui_end(); } } + */ } void leaderboard_dispatch_score(void)