diff --git a/loaded/mic_unmuted.png b/loaded/mic_unmuted.png new file mode 100644 index 0000000..ff7d24b Binary files /dev/null and b/loaded/mic_unmuted.png differ diff --git a/main.c b/main.c index 1c5c7bd..6b4291d 100644 --- a/main.c +++ b/main.c @@ -88,6 +88,7 @@ static sg_image image_mystery; static sg_image image_explosion; static sg_image image_low_health; static sg_image image_mic_muted; +static sg_image image_mic_unmuted; static sg_image image_flag_available; static sg_image image_flag_taken; static sg_image image_squad_invite; @@ -217,7 +218,7 @@ load_image(const char* path) stbi_uc* image_data = stbi_load(path, &x, &y, &comp, desired_channels); if (!image_data) { - fprintf(stderr, "Failed to load %s image: %s\n", path,stbi_failure_reason()); + fprintf(stderr, "Failed to load %s image: %s\n", path, stbi_failure_reason()); exit(-1); } sg_init_image(to_return, @@ -403,6 +404,7 @@ init(void) image_explosion = load_image("loaded/explosion.png"); image_low_health = load_image("loaded/low_health.png"); image_mic_muted = load_image("loaded/mic_muted.png"); + image_mic_unmuted = load_image("loaded/mic_unmuted.png"); image_flag_available = load_image("loaded/flag_available.png"); image_flag_taken = load_image("loaded/flag_ripped.png"); image_squad_invite = load_image("loaded/squad_invite.png"); @@ -564,7 +566,7 @@ static void ui(bool draw, float dt, float width, float height) { static float cur_opacity = 1.0f; - cur_opacity = lerp(cur_opacity, myentity() != NULL ? 1.0f : 0.0f, dt * 5.0f); + cur_opacity = lerp(cur_opacity, myentity() != NULL ? 1.0f : 0.0f, dt * 4.0f); if (cur_opacity <= 0.01f) { return; @@ -585,12 +587,12 @@ ui(bool draw, float dt, float width, float height) float x_center = 0.75f * width; float x = x_center - size / 2.0f; //AABB box = (AABB){ .x = x, .y = invite_y, .width = size, .height = size }; - float yes_x = x - size/4.0f; - float no_x = x + size/4.0f; + float yes_x = x - size / 4.0f; + float no_x = x + size / 4.0f; float buttons_y = invite_y + size / 2.0f; - bool yes_hovered = invited && V2dist(mouse_pos, (V2) { yes_x, buttons_y }) < yes_size/2.0f; - bool no_hovered = invited && V2dist(mouse_pos, (V2) { no_x, buttons_y }) < no_size/2.0f; + bool yes_hovered = invited && V2dist(mouse_pos, (V2) { yes_x, buttons_y }) < yes_size / 2.0f; + bool no_hovered = invited && V2dist(mouse_pos, (V2) { no_x, buttons_y }) < no_size / 2.0f; yes_size = lerp(yes_size, yes_hovered ? 75.0f : 50.0f, dt * 9.0f); no_size = lerp(no_size, no_hovered ? 75.0f : 50.0f, dt * 9.0f); @@ -619,22 +621,22 @@ ui(bool draw, float dt, float width, float height) sgp_reset_pipeline(); } - // yes - transform_scope{ - sgp_set_color(1.0f, 1.0f, 1.0f, 1.0f); - sgp_scale_at(1.0f, -1.0f, yes_x, buttons_y); - sgp_set_image(0, image_check); - draw_texture_centered((V2) { yes_x, buttons_y }, yes_size); - sgp_reset_image(0); + // yes + transform_scope{ + sgp_set_color(1.0f, 1.0f, 1.0f, 1.0f); + sgp_scale_at(1.0f, -1.0f, yes_x, buttons_y); + sgp_set_image(0, image_check); + draw_texture_centered((V2) { yes_x, buttons_y }, yes_size); + sgp_reset_image(0); } - // no - transform_scope{ - sgp_set_color(1.0f, 1.0f, 1.0f, 1.0f); - sgp_scale_at(1.0f, -1.0f, no_x, buttons_y); - sgp_set_image(0, image_no); - draw_texture_centered((V2) { no_x, buttons_y }, no_size); - sgp_reset_image(0); + // no + transform_scope{ + sgp_set_color(1.0f, 1.0f, 1.0f, 1.0f); + sgp_scale_at(1.0f, -1.0f, no_x, buttons_y); + sgp_set_image(0, image_no); + draw_texture_centered((V2) { no_x, buttons_y }, no_size); + sgp_reset_image(0); } } @@ -655,7 +657,7 @@ ui(bool draw, float dt, float width, float height) confirm_invite_this_player = true; } if (draw) - transform_scope { + transform_scope{ const float size = 64.0f; if (selecting_to_invite) @@ -823,21 +825,32 @@ ui(bool draw, float dt, float width, float height) } // draw muted - static float muted_opacity = 0.0f; + static float toggle_mute_opacity = 0.2f; + const float size = 150.0f; + AABB button = (AABB){ + .x = width - size - 40.0f, + .y = height - size - 40.0f, + .width = size, + .height = size, + }; + bool hovered = has_point(button, mouse_pos); + if (build_pressed && hovered) + { + muted = !muted; + build_pressed = false; + } if (draw) { - muted_opacity = lerp(muted_opacity, muted ? 1.0f : 0.0f, 8.0f * dt); - sgp_set_color(1.0f, 1.0f, 1.0f, muted_opacity); - float size_x = 150.0f; - float size_y = 150.0f; - sgp_set_image(0, image_mic_muted); - - float x = width - size_x - 40.0f; - float y = height - size_y - 40.0f; + toggle_mute_opacity = lerp(toggle_mute_opacity, hovered ? 1.0f : 0.2f, 6.0f * dt); + sgp_set_color(1.0f, 1.0f, 1.0f, toggle_mute_opacity); + if (muted) + sgp_set_image(0, image_mic_muted); + else + sgp_set_image(0, image_mic_unmuted); transform_scope { - sgp_scale_at(1.0f, -1.0f, x + size_x / 2.0f, y + size_y / 2.0f); - sgp_draw_textured_rect(x, y, size_x, size_y); + sgp_scale_at(1.0f, -1.0f, button.x + button.width / 2.0f, button.y + button.height / 2.0f); + sgp_draw_textured_rect(button.x, button.y, button.width, button.height); sgp_reset_image(0); } } @@ -1475,20 +1488,20 @@ frame(void) sgp_set_color(1.0f, 1.0f, 1.0f, 1.0f); dbg_drawall(); - } // world space transform end + } // world space transform end - // low health - if (myentity() != NULL) - { - sgp_set_color(1.0f, 1.0f, 1.0f, myentity()->damage); - sgp_set_image(0, image_low_health); - draw_texture_rectangle_centered((V2) { width / 2.0f, height / 2.0f }, (V2) { width, height }); - sgp_reset_image(0); - } + // low health + if (myentity() != NULL) + { + sgp_set_color(1.0f, 1.0f, 1.0f, myentity()->damage); + sgp_set_image(0, image_low_health); + draw_texture_rectangle_centered((V2) { width / 2.0f, height / 2.0f }, (V2) { width, height }); + sgp_reset_image(0); + } - // UI drawn in screen space - ui(true, dt, width, height); - } + // UI drawn in screen space + ui(true, dt, width, height); + } sg_pass_action pass_action = { 0 }; sg_begin_default_pass(&pass_action, (int)width, (int)height); @@ -1496,7 +1509,7 @@ frame(void) sgp_end(); sg_end_pass(); sg_commit(); - } +} void cleanup(void) { @@ -1541,10 +1554,6 @@ void event(const sapp_event* e) cur_editing_rotation += 1; cur_editing_rotation %= RotationLast; } - if (e->key_code == SAPP_KEYCODE_M) - { - muted = !muted; - } if (e->key_code == SAPP_KEYCODE_F11) { fullscreened = !fullscreened;