diff --git a/src/c/main.c b/src/c/main.c index ae4920a..e861e4e 100644 --- a/src/c/main.c +++ b/src/c/main.c @@ -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;