Przeglądaj źródła

fix plugins, remove dupe

MX 2 lat temu
rodzic
commit
d75276bfb1
1 zmienionych plików z 16 dodań i 8 usunięć
  1. 16 8
      trexrunner.c

+ 16 - 8
trexrunner.c

@@ -192,6 +192,17 @@ static void game_state_init(GameState* const game_state) {
     game_state->mutex = furi_mutex_alloc(FuriMutexTypeNormal);
     game_state->mutex = furi_mutex_alloc(FuriMutexTypeNormal);
 }
 }
 
 
+static void game_state_reinit(GameState* const game_state) {
+    game_state->last_tick = furi_get_tick();
+    game_state->y_acceleration = game_state->y_speed = 0;
+    game_state->y_position = DINO_START_Y;
+    game_state->has_cactus = 0;
+    game_state->background_position = 0;
+    game_state->lost = 0;
+    game_state->x_speed = START_x_speed;
+    game_state->score = 0;
+}
+
 int32_t trexrunner_app() {
 int32_t trexrunner_app() {
     FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(PluginEvent));
     FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(PluginEvent));
 
 
@@ -218,7 +229,7 @@ int32_t trexrunner_app() {
     gui_add_view_port(gui, view_port, GuiLayerFullscreen);
     gui_add_view_port(gui, view_port, GuiLayerFullscreen);
 
 
     PluginEvent event;
     PluginEvent event;
-    for(bool processing = true; processing && !game_state->lost;) {
+    for(bool processing = true; processing;) {
         FuriStatus event_status = furi_message_queue_get(event_queue, &event, 100);
         FuriStatus event_status = furi_message_queue_get(event_queue, &event, 100);
         if(event_status == FuriStatusOk) {
         if(event_status == FuriStatusOk) {
             // press events
             // press events
@@ -234,6 +245,10 @@ int32_t trexrunner_app() {
                     case InputKeyRight:
                     case InputKeyRight:
                         break;
                         break;
                     case InputKeyOk:
                     case InputKeyOk:
+                        if(game_state->lost) {
+                            game_state_reinit(game_state);
+                            break;
+                        }
                         if(game_state->y_position == DINO_START_Y)
                         if(game_state->y_position == DINO_START_Y)
                             game_state->y_speed = JUMP_SPEED;
                             game_state->y_speed = JUMP_SPEED;
                         break;
                         break;
@@ -246,13 +261,6 @@ int32_t trexrunner_app() {
                     }
                     }
                 }
                 }
             }
             }
-        } else {
-            // event timeout
-            ;
-        }
-        if(game_state->lost) {
-            furi_message_queue_get(
-                event_queue, &event, 1500); //Sleep to show  the "you lost" message
         }
         }
         view_port_update(view_port);
         view_port_update(view_port);
         furi_mutex_release(game_state->mutex);
         furi_mutex_release(game_state->mutex);