Player creation moved to World::loadLevel
This commit is contained in:
parent
2768371a94
commit
1b935aa081
@ -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));
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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_ */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user