MX vor 2 Jahren
Ursprung
Commit
1975f22216
1 geänderte Dateien mit 55 neuen und 48 gelöschten Zeilen
  1. 55 48
      apps_source_code/nupogodi_game/nupogodi.c

+ 55 - 48
apps_source_code/nupogodi_game/nupogodi.c

@@ -10,7 +10,7 @@
 #include <nupogodi_icons.h>
 #include "notifications.h"
 
-typedef struct NuPogodiModel NuPogodiModel;
+#define TAG "NuPogodi"
 
 typedef struct {
     Gui* gui;
@@ -19,7 +19,6 @@ typedef struct {
     View* view;
     FuriThread* worker_thread;
     FuriTimer* timer;
-    NuPogodiModel* model;
 } NuPogodiApp;
 
 typedef enum {
@@ -31,7 +30,7 @@ typedef enum {
     Over,
 } NuPogodiMode;
 
-struct NuPogodiModel {
+typedef struct {
     bool sound;
     NuPogodiMode mode;
     uint8_t tick;
@@ -40,7 +39,7 @@ struct NuPogodiModel {
     uint8_t missed;
     uint16_t scores;
     uint8_t eggs[4];
-};
+} NuPogodiModel;
 
 typedef enum {
     WorkerEventReserved = (1 << 0),
@@ -238,51 +237,58 @@ static bool nupogodi_view_input_callback(InputEvent* event, void* context) {
     furi_assert(app);
     bool consumed = false;
 
-    if(app->model->mode == Fail) {
-        return false;
-    }
+    FURI_LOG_D(TAG, "Input %u %u", event->type, event->key);
 
-    if(event->type == InputTypeShort) {
-        switch(event->key) {
-        case InputKeyUp:
-            consumed = true;
-            app->model->top = true;
-            break;
-        case InputKeyDown:
-            consumed = true;
-            app->model->top = false;
-            break;
-        case InputKeyLeft:
-            consumed = true;
-            app->model->left = true;
-            break;
-        case InputKeyRight:
-            consumed = true;
-            app->model->left = false;
-            break;
-        case InputKeyOk:
-            consumed = true;
-            if(app->model->mode == Play) {
-                app->model->mode = Pause;
-            } else if(app->model->mode == Pause) {
-                app->model->mode = Play;
-            } else if(app->model->mode == Over) {
-                app->model->mode = Ready;
+    with_view_model(
+        app->view,
+        NuPogodiModel * model,
+        {
+            if(model->mode == Fail) {
+                return false;
             }
-            break;
-        default:
-            break;
-        }
-    } else if(event->type == InputTypeLong) {
-        switch(event->key) {
-        case InputKeyOk:
-            consumed = true;
-            app->model->sound = !app->model->sound;
-            break;
-        default:
-            break;
-        }
-    }
+
+            if(event->type == InputTypeShort) {
+                switch(event->key) {
+                case InputKeyUp:
+                    consumed = true;
+                    model->top = true;
+                    break;
+                case InputKeyDown:
+                    consumed = true;
+                    model->top = false;
+                    break;
+                case InputKeyLeft:
+                    consumed = true;
+                    model->left = true;
+                    break;
+                case InputKeyRight:
+                    consumed = true;
+                    model->left = false;
+                    break;
+                case InputKeyOk:
+                    consumed = true;
+                    if(model->mode == Play) {
+                        model->mode = Pause;
+                    } else if(model->mode == Pause) {
+                        model->mode = Play;
+                    } else if(model->mode == Over) {
+                        model->mode = Ready;
+                    }
+                    break;
+                default:
+                    break;
+                }
+            } else if(event->type == InputTypeLong) {
+                switch(event->key) {
+                case InputKeyOk:
+                    consumed = true;
+                    model->sound = !model->sound;
+                    break;
+                default:
+                    break;
+                }
+            }
+    }, consumed);
 
     return consumed;
 }
@@ -304,6 +310,8 @@ static int32_t nupogodi_worker(void* context) {
             furi_thread_flags_wait(WORKER_EVENTS_MASK, FuriFlagWaitAny, FuriWaitForever);
         furi_check((events & FuriFlagError) == 0);
 
+        FURI_LOG_D(TAG, "Worker %lu", events);
+
         if(events & WorkerEventStop) break;
         if(events & WorkerEventTick) {
             with_view_model(
@@ -436,7 +444,6 @@ static NuPogodiApp* nupogodi_app_alloc() {
         app->view,
         NuPogodiModel * model,
         {
-            app->model = model;
             model->mode = Logo;
             model->tick = 1;
             model->top = false;