From 1b935aa081b806106362c0f1912f5aec4d944e68 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 16 Nov 2023 03:31:50 +0300 Subject: [PATCH] Player creation moved to World::loadLevel --- src/frontend/screens.cpp | 11 +++-------- src/world/World.cpp | 9 +++++++-- src/world/World.h | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/frontend/screens.cpp b/src/frontend/screens.cpp index 66be91b9..9086af36 100644 --- a/src/frontend/screens.cpp +++ b/src/frontend/screens.cpp @@ -43,10 +43,8 @@ MenuScreen::MenuScreen(Engine* engine_) : Screen(engine_) { std::cout << "-- loading world" << std::endl; EngineSettings& settings = engine->getSettings(); World* world = new World("world", enginefs::get_worlds_folder()/"world", 42, settings); - vec3 playerPosition = vec3(0, 64, 0); - Camera* camera = new Camera(playerPosition, radians(90.0f)); - Player* player = new Player(playerPosition, 4.0f, camera); - auto screen = new LevelScreen(engine, world->loadLevel(player, settings)); + + auto screen = new LevelScreen(engine, world->loadLevel(settings)); engine->setScreen(shared_ptr(screen)); }); panel->add(shared_ptr(button)); @@ -61,10 +59,7 @@ MenuScreen::MenuScreen(Engine* engine_) : Screen(engine_) { button->listenAction([this, panel, name](GUI*) { EngineSettings& settings = engine->getSettings(); World* world = new World(name, enginefs::get_worlds_folder()/name, 42, settings); - vec3 playerPosition = vec3(0, 64, 0); - Camera* camera = new Camera(playerPosition, radians(90.0f)); - Player* player = new Player(playerPosition, 4.0f, camera); - engine->setScreen(new LevelScreen(engine, world->loadLevel(player, settings))); + engine->setScreen(new LevelScreen(engine, world->loadLevel(settings))); }); worldsPanel->add(shared_ptr(button)); } diff --git a/src/world/World.cpp b/src/world/World.cpp index 493f2312..0bfa5be7 100644 --- a/src/world/World.cpp +++ b/src/world/World.cpp @@ -1,6 +1,7 @@ #include "World.h" #include +#include #include "Level.h" #include "../files/WorldFiles.h" @@ -12,6 +13,7 @@ #include "../window/Camera.h" #include "../world/LevelEvents.h" +using glm::vec3; using std::shared_ptr; World::World(std::string name, std::string directory, int seed, EngineSettings& settings) : name(name), seed(seed) { @@ -36,13 +38,16 @@ void World::write(Level* level, bool writeChunks) { wfile->writePlayer(level->player); } -Level* World::loadLevel(Player* player, EngineSettings& settings) { +Level* World::loadLevel(EngineSettings& settings) { ChunksStorage* storage = new ChunksStorage(); LevelEvents* events = new LevelEvents(); + + vec3 playerPosition = vec3(0, 64, 0); + Camera* camera = new Camera(playerPosition, glm::radians(90.0f)); + Player* player = new Player(playerPosition, 4.0f, camera); Level* level = new Level(this, player, storage, events, settings); wfile->readPlayer(player); - Camera* camera = player->camera; camera->rotation = mat4(1.0f); camera->rotate(player->camY, player->camX, 0); return level; diff --git a/src/world/World.h b/src/world/World.h index 4ffd8146..a35903de 100644 --- a/src/world/World.h +++ b/src/world/World.h @@ -20,7 +20,7 @@ public: ~World(); void write(Level* level, bool writeChunks); - Level* loadLevel(Player* player, EngineSettings& settings); + Level* loadLevel(EngineSettings& settings); }; #endif /* WORLD_WORLD_H_ */