mirror of
https://git.wetfence.xyz/RandyTheSilly/Trigalarm.git
synced 2026-10-26 19:09:56 -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;
|
||||
|
||||
// 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
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
Reference in new issue
Block a user