]> git.earman.xyz Git - sensor-watch.git/commitdiff
Added tap controls
authorDavid Volovskiy <devolov@gmail.com>
Wed, 3 Sep 2025 02:15:06 +0000 (22:15 -0400)
committerDavid Volovskiy <devolov@gmail.com>
Wed, 3 Sep 2025 02:15:06 +0000 (22:15 -0400)
watch-faces/complication/blackjack_face.c
watch-faces/complication/blackjack_face.h

index b0f78b09dfa139b5349a7ce449db0225f1cdb332..9b0de5a5d1554814ac673b0264a164d4a1b8cd3b 100755 (executable)
@@ -273,12 +273,28 @@ void handle_button_presses(bool hit) {
     }\r
 }\r
 \r
+static void toggle_tap_control(blackjack_face_state_t *state) {\r
+    if (state->tap_control_on) {\r
+        movement_disable_tap_detection_if_available();\r
+        state->tap_control_on = false;\r
+        watch_clear_indicator(WATCH_INDICATOR_SIGNAL);\r
+    } else {\r
+        bool tap_could_enable = movement_enable_tap_detection_if_available();\r
+        if (tap_could_enable) {\r
+            state->tap_control_on = true;\r
+            watch_set_indicator(WATCH_INDICATOR_SIGNAL);\r
+        }\r
+    }\r
+}\r
+\r
 void blackjack_face_setup(uint8_t watch_face_index, void **context_ptr) {\r
     (void) watch_face_index;\r
 \r
     if (*context_ptr == NULL) {\r
         *context_ptr = malloc(sizeof(blackjack_face_state_t));\r
         memset(*context_ptr, 0, sizeof(blackjack_face_state_t));\r
+        blackjack_face_state_t *state = (blackjack_face_state_t *)*context_ptr;\r
+        state->tap_control_on = false;\r
     }\r
 }\r
 \r
@@ -290,10 +306,11 @@ void blackjack_face_activate(void *context) {
 \r
 bool blackjack_face_loop(movement_event_t event, void *context) {\r
     blackjack_face_state_t *state = (blackjack_face_state_t *) context;\r
-    (void) state;\r
-\r
     switch (event.event_type) {\r
         case EVENT_ACTIVATE:\r
+            if (state->tap_control_on) {\r
+                movement_enable_tap_detection_if_available();\r
+            }\r
             break;\r
         case EVENT_TICK:\r
             if (game_state == BJ_DEALER_PLAYING) {\r
@@ -301,12 +318,19 @@ bool blackjack_face_loop(movement_event_t event, void *context) {
             }\r
             break;\r
         case EVENT_LIGHT_BUTTON_UP:\r
+        case EVENT_DOUBLE_TAP:\r
             handle_button_presses(false);\r
         case EVENT_LIGHT_BUTTON_DOWN:\r
             break;\r
         case EVENT_ALARM_BUTTON_UP:\r
+        case EVENT_SINGLE_TAP:\r
             handle_button_presses(true);\r
             break;\r
+        case EVENT_ALARM_LONG_PRESS:\r
+            if (game_state == BJ_TITLE_SCREEN) {\r
+                toggle_tap_control(state);\r
+            }\r
+            break;\r
         case EVENT_TIMEOUT:\r
             break;\r
         default:\r
index 36eb4425bf5289116c4699f8591e63b783d4f32e..ff52d79fdade8b422275ab823a3cab6b9dbec1e2 100755 (executable)
@@ -36,7 +36,7 @@
 \r
 \r
 typedef struct {\r
-    // Anything you need to keep track of, put it here!\r
+    bool tap_control_on;\r
 } blackjack_face_state_t;\r
 \r
 void blackjack_face_setup(uint8_t watch_face_index, void ** context_ptr);\r