Fix lots of UI bugs when switching triangles

This commit is contained in:
RandyTheSilly committed 2026-10-30 20:33:12 -04:00
1 parent 530a2b82ab
commit 39b7443c63
1 file changed
+27 -14
+27 -14
View File
@@ -66,7 +66,7 @@ static uint8_t s_solution_indices[3];
static uint8_t s_selected_indices[3] = {9, 9, 9};
static uint8_t s_countdown_int = 0;
static char s_countdown_buf[4];
static char s_progress_buf[7];
static char s_progress_buf[9];
static uint32_t s_vibe_segments[5];
static VibePattern s_vibe_pattern;
@@ -290,7 +290,30 @@ static void send_zap(uint8_t intensity) {
////////////////////// ALARM //////////////////////
static void set_alarm_highlighter_frame() {
switch (s_highlight_pos) {
case 0:
layer_set_frame(s_alarm_highlight_layer, s_drop_function_grect);
break;
case 1:
layer_set_frame(s_alarm_highlight_layer, s_drop_over_grect);
break;
case 2:
layer_set_frame(s_alarm_highlight_layer, s_drop_under_grect);
}
}
static void update_for_new_triangle() {
// clear selections
for (int i = 0; i < 3; ++i) {
s_selected_indices[i] = 9;
}
s_highlight_pos = 0;
set_alarm_highlighter_frame();
text_layer_set_text(s_drop_txt_function_layer, "");
text_layer_set_text(s_drop_txt_over_layer, "");
text_layer_set_text(s_drop_txt_under_layer, "");
// pick & display 2 side lengths to the user
static char side_a_buffer[8], side_b_buffer[8], side_c_buffer[8];
uint8_t ignored_side = rand() % 3;
@@ -299,6 +322,7 @@ static void update_for_new_triangle() {
uint8_t tan_index = rand() % 2;
switch (ignored_side) {
case 0:
side_a_buffer[0] = '\0';
snprintf(side_b_buffer, sizeof(side_b_buffer), "%u", s_triangle_layer->side_b);
snprintf(side_c_buffer, sizeof(side_c_buffer), "%u", s_triangle_layer->side_c);
s_options_over[0] = side_b_buffer;
@@ -328,6 +352,7 @@ static void update_for_new_triangle() {
break;
case 1:
side_b_buffer[0] = '\0';
snprintf(side_a_buffer, sizeof(side_a_buffer), "%u", s_triangle_layer->side_a);
snprintf(side_c_buffer, sizeof(side_c_buffer), "%u", s_triangle_layer->side_c);
s_options_over[0] = side_a_buffer;
@@ -358,6 +383,7 @@ static void update_for_new_triangle() {
break;
case 2:
side_c_buffer[0] = '\0';
snprintf(side_a_buffer, sizeof(side_a_buffer), "%u", s_triangle_layer->side_a);
snprintf(side_b_buffer, sizeof(side_b_buffer), "%u", s_triangle_layer->side_b);
s_options_over[0] = side_a_buffer;
@@ -463,19 +489,6 @@ static void alarm_highlight_layer_update_proc(Layer *layer, GContext *ctx) {
graphics_draw_rect(ctx, layer_get_bounds(layer));
}
static void set_alarm_highlighter_frame() {
switch (s_highlight_pos) {
case 0:
layer_set_frame(s_alarm_highlight_layer, s_drop_function_grect);
break;
case 1:
layer_set_frame(s_alarm_highlight_layer, s_drop_over_grect);
break;
case 2:
layer_set_frame(s_alarm_highlight_layer, s_drop_under_grect);
}
}
static void alarm_up_click_handler(void *recognizer, void *ctx) {
if (s_highlight_pos == 0) {
s_highlight_pos = 2;