From fad11a037cd674e7d709ec46f69e329c1b38ce30 Mon Sep 17 00:00:00 2001 From: Cameron Reikes Date: Mon, 14 Nov 2022 17:48:39 -0800 Subject: [PATCH] Toggle mute button always visible, no keyboard --- loaded/mic_unmuted.png | Bin 0 -> 10571 bytes main.c | 107 ++++++++++++++++++++++------------------- 2 files changed, 58 insertions(+), 49 deletions(-) create mode 100644 loaded/mic_unmuted.png diff --git a/loaded/mic_unmuted.png b/loaded/mic_unmuted.png new file mode 100644 index 0000000000000000000000000000000000000000..ff7d24b6b9577ce800d7f5e83cf401734ac88c31 GIT binary patch literal 10571 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 literal 0 HcmV?d00001 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;