Browse Source

added new x5 item, added button animation

ds.shevelev 3 years ago
parent
commit
c2fcab3d5e
2 changed files with 25 additions and 16 deletions
  1. BIN
      assets/x5.png
  2. 25 16
      slotmachine.c

BIN
assets/x5.png


+ 25 - 16
slotmachine.c

@@ -11,14 +11,16 @@ const Icon* slot_frames[] = {
     &I_x2,
     &I_x2,
     &I_x3,
     &I_x3,
     &I_x4,
     &I_x4,
-    &I_x2_2
+    &I_x2_2,
+    &I_x5
 };
 };
 
 
 const uint8_t slot_coef[] = {
 const uint8_t slot_coef[] = {
     2,
     2,
     3,
     3,
     4,
     4,
-    2
+    2,
+    5
 };
 };
 
 
 typedef struct {
 typedef struct {
@@ -42,7 +44,7 @@ typedef struct {
 
 
 #define START_MONEY 1500;
 #define START_MONEY 1500;
 #define START_BET 300;
 #define START_BET 300;
-#define RAND_MAX 4;
+#define RAND_MAX 5;
 #define DEFAULT_SPEED 16;
 #define DEFAULT_SPEED 16;
 
 
 uint8_t DEFAULT_SPINNING_TIMES = 10;
 uint8_t DEFAULT_SPINNING_TIMES = 10;
@@ -52,6 +54,7 @@ void game_results(SlotMachineApp* app) {
         0,
         0,
         0,
         0,
         0,
         0,
+        0,
         0
         0
     };
     };
 
 
@@ -61,7 +64,7 @@ void game_results(SlotMachineApp* app) {
         matches[app->columns[i]->value]++;
         matches[app->columns[i]->value]++;
     }
     }
 
 
-    for (int i = 0; i < 4; i++) {
+    for (int i = 0; i < 5; i++) {
         if (matches[i] >= 2) {
         if (matches[i] >= 2) {
             total += app->bet * (slot_coef[i] / (double)(MAX_COLUMNS_COUNT + 1 - matches[i]));
             total += app->bet * (slot_coef[i] / (double)(MAX_COLUMNS_COUNT + 1 - matches[i]));
         }
         }
@@ -86,13 +89,27 @@ void draw_container(Canvas* canvas) {
     canvas_draw_line(canvas, 91, 16, 91, 48);
     canvas_draw_line(canvas, 91, 16, 91, 48);
 }
 }
 
 
-void drawButton(Canvas* canvas, uint8_t x, uint8_t y, char* str) {
+bool checkIsSpinning(SlotMachineApp* slotmachine) {
+    for (int i = 0; i< COLUMNS_COUNT; i++) {
+       if (slotmachine->columns[i]->spining) return true;
+    }
+
+    return false;
+}
+
+void drawButton(Canvas* canvas, uint8_t x, uint8_t y, char* str, bool invert) {
     const uint8_t string_width = canvas_string_width(canvas, str);
     const uint8_t string_width = canvas_string_width(canvas, str);
     canvas_set_font(canvas, FontSecondary);
     canvas_set_font(canvas, FontSecondary);
-    canvas_draw_rframe(canvas, x, y, string_width + 15, 11, 3);
+    if (invert) {
+        canvas_draw_rbox(canvas, x, y, string_width + 15, 11, 3);
+        canvas_invert_color(canvas);
+    } else {
+        canvas_draw_rframe(canvas, x, y, string_width + 15, 11, 3);
+    }
     canvas_draw_circle(canvas, x+5, y+5, 3);
     canvas_draw_circle(canvas, x+5, y+5, 3);
     canvas_draw_circle(canvas, x+5, y+5, 1);
     canvas_draw_circle(canvas, x+5, y+5, 1);
     canvas_draw_str(canvas, x+13, y+9, str);
     canvas_draw_str(canvas, x+13, y+9, str);
+    canvas_invert_color(canvas);
 }
 }
 
 
 // viewport callback
 // viewport callback
@@ -122,7 +139,7 @@ void slotmachine_draw_callback(Canvas* canvas, void* ctx) {
 
 
         canvas_set_font(canvas, FontPrimary);
         canvas_set_font(canvas, FontPrimary);
         canvas_draw_str(canvas, 2, 35, winamountStr);
         canvas_draw_str(canvas, 2, 35, winamountStr);
-        drawButton(canvas, 95, 52, "Ok");
+        drawButton(canvas, 95, 52, "Ok", false);
 
 
         furi_mutex_release(slotmachine->model_mutex);
         furi_mutex_release(slotmachine->model_mutex);
         return;
         return;
@@ -155,7 +172,7 @@ void slotmachine_draw_callback(Canvas* canvas, void* ctx) {
         canvas_draw_icon(canvas, slotmachine->columns[i]->x, slotmachine->columns[i]->y, slot_frames[slotmachine->columns[i]->value]);
         canvas_draw_icon(canvas, slotmachine->columns[i]->x, slotmachine->columns[i]->y, slot_frames[slotmachine->columns[i]->value]);
     }
     }
     draw_container(canvas);
     draw_container(canvas);
-    drawButton(canvas, 90, 52, "Spin");
+    drawButton(canvas, 90, 52, "Spin", checkIsSpinning(slotmachine));
 
 
     furi_mutex_release(slotmachine->model_mutex);
     furi_mutex_release(slotmachine->model_mutex);
 }
 }
@@ -209,14 +226,6 @@ void slotmachine_app_free(SlotMachineApp* app) {
     free(app);
     free(app);
 }
 }
 
 
-bool checkIsSpinning(SlotMachineApp* slotmachine) {
-    for (int i = 0; i< COLUMNS_COUNT; i++) {
-       if (slotmachine->columns[i]->spining) return true;
-    }
-
-    return false;
-}
-
 // entry point
 // entry point
 int32_t slotmachine_app(void* p) {
 int32_t slotmachine_app(void* p) {
     UNUSED(p);
     UNUSED(p);