mirror of
https://git.wetfence.xyz/RandyTheSilly/Trigalarm.git
synced 2026-10-27 03:09:58 -04:00
Make RightTriangleLayer updateable
This commit is contained in:
1 parent
ce67fc3081
commit
482f4d21ba
3 files changed
+24
-9
No files matched your search
+2
-1
@@ -54,11 +54,12 @@ static GBitmap *s_clock_bmp;
|
|||||||
static GBitmap *s_check_bmp;
|
static GBitmap *s_check_bmp;
|
||||||
|
|
||||||
// global vars
|
// global vars
|
||||||
|
static WakeupReason s_alarm_reason;
|
||||||
static GColor s_setter_highlight_color;
|
static GColor s_setter_highlight_color;
|
||||||
static uint8_t s_highlight_pos = 0;
|
static uint8_t s_highlight_pos = 0;
|
||||||
static bool s_skip_current_day = false;
|
static bool s_skip_current_day = false;
|
||||||
//// alarm
|
//// 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_solution_indices[3];
|
||||||
static uint8_t s_selected_indices[3] = {9, 9, 9};
|
static uint8_t s_selected_indices[3] = {9, 9, 9};
|
||||||
static uint8_t s_awareness_countdown_int = 0;
|
static uint8_t s_awareness_countdown_int = 0;
|
||||||
|
|||||||
+21
-8
@@ -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);
|
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) {
|
static void right_triangle_layer_generate_properties(RightTriangleLayer *tri, GRect frame) {
|
||||||
RightTriangleLayer *tri = malloc(sizeof(RightTriangleLayer));
|
|
||||||
if (!tri)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
// set color
|
|
||||||
tri->color = color;
|
|
||||||
|
|
||||||
// determine angles
|
// determine angles
|
||||||
tri->angle_A = 90; // right angle at apex
|
tri->angle_A = 90; // right angle at apex
|
||||||
tri->theta_angle_is_left = rand() % 2;
|
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_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);
|
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);
|
} 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
|
// create layer with room for a pointer-sized data slot & store the RightTriangleLayer* there
|
||||||
tri->layer = layer_create_with_data(frame, sizeof(RightTriangleLayer *));
|
tri->layer = layer_create_with_data(frame, sizeof(RightTriangleLayer *));
|
||||||
@@ -75,6 +80,14 @@ RightTriangleLayer *right_triangle_layer_create(GRect frame, GColor color) {
|
|||||||
return tri;
|
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) {
|
void right_triangle_layer_destroy(RightTriangleLayer *tri) {
|
||||||
if (!tri)
|
if (!tri)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -20,4 +20,5 @@ typedef struct {
|
|||||||
} __attribute__((__packed__)) RightTriangleLayer;
|
} __attribute__((__packed__)) RightTriangleLayer;
|
||||||
|
|
||||||
RightTriangleLayer *right_triangle_layer_create(GRect frame, GColor color);
|
RightTriangleLayer *right_triangle_layer_create(GRect frame, GColor color);
|
||||||
|
void right_triangle_layer_regen(RightTriangleLayer *tri);
|
||||||
void right_triangle_layer_destroy(RightTriangleLayer *tri);
|
void right_triangle_layer_destroy(RightTriangleLayer *tri);
|
||||||
Reference in new issue
Block a user