diff --git a/src/logic/LevelController.cpp b/src/logic/LevelController.cpp index cacaccdf..5e01d26d 100644 --- a/src/logic/LevelController.cpp +++ b/src/logic/LevelController.cpp @@ -9,18 +9,15 @@ LevelController::LevelController(EngineSettings& settings, Level* level) : settings(settings), level(level) { - blocks = new BlocksController(level, settings.chunks.padding); - chunks = new ChunksController(level, settings.chunks.padding); - player = new PlayerController(level, settings, blocks); + blocks = std::make_unique(level, settings.chunks.padding); + chunks = std::make_unique(level, settings.chunks.padding); + player = std::make_unique(level, settings, blocks.get()); scripting::on_world_load(level); } LevelController::~LevelController() { scripting::on_world_quit(); - delete player; - delete chunks; - delete blocks; } void LevelController::update(float delta, bool input, bool pause) { diff --git a/src/logic/LevelController.h b/src/logic/LevelController.h index f319d554..01a98c97 100644 --- a/src/logic/LevelController.h +++ b/src/logic/LevelController.h @@ -1,6 +1,7 @@ #ifndef LOGIC_LEVEL_CONTROLLER_H_ #define LOGIC_LEVEL_CONTROLLER_H_ +#include #include "../settings.h" class Level; @@ -13,9 +14,9 @@ class LevelController { EngineSettings& settings; Level* level; // Sub-controllers - BlocksController* blocks; - ChunksController* chunks; - PlayerController* player; + std::unique_ptr blocks; + std::unique_ptr chunks; + std::unique_ptr player; public: LevelController(EngineSettings& settings, Level* level); ~LevelController();