jblanked 1 год назад
Родитель
Сommit
9acb4a5ce7
4 измененных файлов с 8 добавлено и 33 удалено
  1. 7 1
      game/game.c
  2. 0 23
      game/level.c
  3. 1 2
      game/level.h
  4. 0 7
      game/player.c

+ 7 - 1
game/game.c

@@ -14,7 +14,13 @@ static void game_start(GameManager *game_manager, void *ctx)
     game_context->fps = game_fps_choices_2[game_fps_index];
     game_context->player_context = NULL;
     game_context->current_level = 0;
-    allocate_level(game_manager, 0);
+    if (!allocate_level(game_manager, 0))
+    {
+        FURI_LOG_E("Game", "Failed to allocate level 0");
+        return;
+    }
+    game_context->level_count = 1;
+    game_context->levels[1] = NULL;
 
     // imu
     game_context->imu = imu_alloc();

+ 0 - 23
game/level.c

@@ -32,29 +32,6 @@ bool allocate_level(GameManager *manager, int index)
     furi_string_free(world_list);
     return true;
 }
-void free_last_level(GameManager *manager)
-{
-    GameContext *game_context = game_manager_game_context_get(manager);
-    if (!game_context)
-    {
-        FURI_LOG_E("Game", "Game context is NULL");
-        return;
-    }
-    if (game_context->current_level == 1)
-    {
-        if (game_context->levels[0])
-        {
-            level_free(game_context->levels[0]);
-        }
-    }
-    else
-    {
-        if (game_context->levels[1])
-        {
-            level_free(game_context->levels[1]);
-        }
-    }
-}
 static void set_world(Level *level, GameManager *manager, char *id)
 {
     char file_path[256];

+ 1 - 2
game/level.h

@@ -8,5 +8,4 @@ typedef struct
 } LevelContext;
 
 const LevelBehaviour *generic_level(const char *id, int index);
-bool allocate_level(GameManager *manager, int index);
-void free_last_level(GameManager *manager);
+bool allocate_level(GameManager *manager, int index);

+ 0 - 7
game/player.c

@@ -188,13 +188,6 @@ static void player_update(Entity *self, GameManager *manager, void *context)
         };
     }
 
-    if (is_new_level)
-    {
-        // remove previous level if it exists
-        free_last_level(manager);
-        is_new_level = false;
-    }
-
     // apply health regeneration
     player->elapsed_health_regen += 1.0f / game_context->fps;
     if (player->elapsed_health_regen >= 1.0f && player->health < player->max_health)