Player creation moved to World::loadLevel

This commit is contained in:
MihailRis 2023-11-16 03:31:50 +03:00
parent 2768371a94
commit 1b935aa081
3 changed files with 11 additions and 11 deletions

View File

@ -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>(screen));
});
panel->add(shared_ptr<UINode>(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<UINode>(button));
}

View File

@ -1,6 +1,7 @@
#include "World.h"
#include <memory>
#include <glm/glm.hpp>
#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;

View File

@ -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_ */