static game_state_t game_state;\r
static uint8_t deck[DECK_SIZE] = {0};\r
static uint8_t current_card = 0;\r
-static bool add_to_games_played = false;\r
-static bool add_to_games_won = false;\r
+static blackjack_face_state_t *g_state = NULL;\r
hand_info_t player;\r
hand_info_t dealer;\r
\r
watch_display_text(pos, buf);\r
}\r
\r
+static void add_to_game_scores(bool add_to_wins) {\r
+ g_state->games_played++;\r
+ if (g_state->games_played == 0) {\r
+ // Overflow\r
+ g_state->games_played = 1;\r
+ g_state->games_won = add_to_wins ? 1 : 0;\r
+ return;\r
+ }\r
+ if (add_to_wins) {\r
+ g_state->games_won++;\r
+ if (g_state->games_won == 0) {\r
+ // Overflow\r
+ g_state->games_played = 1;\r
+ g_state->games_won = 1;\r
+ }\r
+ }\r
+}\r
+\r
static void display_win(void) {\r
game_state = BJ_RESULT;\r
- add_to_games_played = true;\r
- add_to_games_won = true;\r
+ add_to_game_scores(true);\r
watch_display_text_with_fallback(WATCH_POSITION_BOTTOM, "WlN ", " WIN");\r
display_score(player.score, WATCH_POSITION_SECONDS);\r
display_score(dealer.score, WATCH_POSITION_TOP_RIGHT);\r
\r
static void display_lose(void) {\r
game_state = BJ_RESULT;\r
- add_to_games_played = true;\r
+ add_to_game_scores(false);\r
watch_display_text_with_fallback(WATCH_POSITION_BOTTOM, "LOSE", "lOSE");\r
display_score(player.score, WATCH_POSITION_SECONDS);\r
display_score(dealer.score, WATCH_POSITION_TOP_RIGHT);\r
\r
static void display_bust(void) {\r
game_state = BJ_RESULT;\r
- add_to_games_played = true;\r
+ add_to_game_scores(false);\r
watch_display_text_with_fallback(WATCH_POSITION_BOTTOM, "8UST", "BUST");\r
}\r
\r
}\r
}\r
\r
-static void add_to_game_scores(blackjack_face_state_t *state) {\r
- if (add_to_games_played) {\r
- add_to_games_played = false;\r
- state->games_played++;\r
- if (state->games_played == 0) {\r
- // Overflow\r
- state->games_won = 0;\r
- }\r
- }\r
- if (add_to_games_won) {\r
- add_to_games_won = false;\r
- state->games_won++;\r
- if (state->games_won == 0) {\r
- // Overflow\r
- state->games_played = 0;\r
- }\r
- }\r
-}\r
-\r
static void handle_button_presses(bool tap_control_on, bool hit) {\r
switch (game_state)\r
{\r
blackjack_face_state_t *state = (blackjack_face_state_t *)*context_ptr;\r
state->tap_control_on = false;\r
}\r
+ g_state = (blackjack_face_state_t *)*context_ptr;\r
}\r
\r
void blackjack_face_activate(void *context) {\r
\r
bool blackjack_face_loop(movement_event_t event, void *context) {\r
blackjack_face_state_t *state = (blackjack_face_state_t *) context;\r
- if (game_state == BJ_RESULT) {\r
- add_to_game_scores(state);\r
- }\r
switch (event.event_type) {\r
case EVENT_ACTIVATE:\r
if (state->tap_control_on) watch_set_indicator(WATCH_INDICATOR_SIGNAL);\r