Make RightTriangleLayer updateable

This commit is contained in:
RandyTheSilly committed 2026-10-21 18:51:01 -04:00
1 parent ce67fc3081
commit 482f4d21ba
3 files changed
+24 -9

No files matched your search

+2 -1
View File
@@ -54,11 +54,12 @@ static GBitmap *s_clock_bmp;
static GBitmap *s_check_bmp;
// global vars
static WakeupReason s_alarm_reason;
static GColor s_setter_highlight_color;
static uint8_t s_highlight_pos = 0;
static bool s_skip_current_day = false;
//// alarm
static WakeupReason s_alarm_reason;
static uint8_t s_demotion_promotion_clocks[2];
static uint8_t s_solution_indices[3];
static uint8_t s_selected_indices[3] = {9, 9, 9};
static uint8_t s_awareness_countdown_int = 0;
+21 -8
View File
@@ -37,14 +37,7 @@ static void right_triangle_layer_update_proc(Layer *layer, GContext *ctx) {
graphics_draw_circle(ctx, GPoint(tri->theta_angle_is_left ? start_x : end_x, base_y), 5);
}
RightTriangleLayer *right_triangle_layer_create(GRect frame, GColor color) {
RightTriangleLayer *tri = malloc(sizeof(RightTriangleLayer));
if (!tri)
return NULL;
// set color
tri->color = color;
static void right_triangle_layer_generate_properties(RightTriangleLayer *tri, GRect frame) {
// determine angles
tri->angle_A = 90; // right angle at apex
tri->theta_angle_is_left = rand() % 2;
@@ -66,6 +59,18 @@ RightTriangleLayer *right_triangle_layer_create(GRect frame, GColor color) {
tri->side_b = (uint16_t)(((uint32_t)sin_B * tri->side_a) / TRIG_MAX_RATIO);
tri->side_c = (uint16_t)(((uint32_t)sin_C * tri->side_a) / TRIG_MAX_RATIO);
} while (tri->side_a == tri->side_b || tri->side_a == tri->side_c || tri->side_b == tri->side_c);
}
RightTriangleLayer *right_triangle_layer_create(GRect frame, GColor color) {
RightTriangleLayer *tri = malloc(sizeof(RightTriangleLayer));
if (!tri)
return NULL;
// set color
tri->color = color;
// generate this triangle's angles and side lengths
right_triangle_layer_generate_properties(tri, frame);
// create layer with room for a pointer-sized data slot & store the RightTriangleLayer* there
tri->layer = layer_create_with_data(frame, sizeof(RightTriangleLayer *));
@@ -75,6 +80,14 @@ RightTriangleLayer *right_triangle_layer_create(GRect frame, GColor color) {
return tri;
}
void right_triangle_layer_regen(RightTriangleLayer *tri) {
if (!tri || !tri->layer)
return;
right_triangle_layer_generate_properties(tri, layer_get_bounds(tri->layer));
layer_mark_dirty(tri->layer);
}
void right_triangle_layer_destroy(RightTriangleLayer *tri) {
if (!tri)
return;
+1
View File
@@ -20,4 +20,5 @@ typedef struct {
} __attribute__((__packed__)) RightTriangleLayer;
RightTriangleLayer *right_triangle_layer_create(GRect frame, GColor color);
void right_triangle_layer_regen(RightTriangleLayer *tri);
void right_triangle_layer_destroy(RightTriangleLayer *tri);