One step closer to multiplayer

This commit is contained in:
InfiniteCoder
2024-03-02 22:59:31 +03:00
parent 9d9c9f5570
commit 0157213a56
26 changed files with 213 additions and 219 deletions
+14 -9
View File
@@ -50,7 +50,7 @@ void World::updateTimers(float delta) {
void World::write(Level* level) {
const Content* content = level->content;
Chunks* chunks = level->chunks;
Chunks* chunks = level->chunks.get();
for (size_t i = 0; i < chunks->volume; i++) {
auto chunk = chunks->chunks[i];
@@ -64,7 +64,11 @@ void World::write(Level* level) {
}
wfile->write(this, content);
wfile->writePlayer(level->player);
for (auto object : level->objects) {
if (std::shared_ptr<Player> player = std::dynamic_pointer_cast<Player>(object)) {
wfile->writePlayer(player);
}
}
}
Level* World::create(std::string name,
@@ -77,9 +81,6 @@ Level* World::create(std::string name,
) {
auto world = new World(name, generator, directory, seed, settings, content, packs);
auto level = new Level(world, content, settings);
auto inventory = level->player->getInventory();
inventory->setId(world->getNextInventoryId());
level->inventories->store(inventory);
return level;
}
@@ -97,9 +98,13 @@ Level* World::load(fs::path directory,
}
auto level = new Level(world.get(), content, settings);
wfile->readPlayer(level->player);
level->inventories->store(level->player->getInventory());
world.release();
for (auto object : level->objects) {
if (std::shared_ptr<Player> player = std::dynamic_pointer_cast<Player>(object)) {
wfile->readPlayer(player);
level->inventories->store(player->getInventory());
}
}
(void)world.release();
return level;
}
@@ -193,4 +198,4 @@ std::unique_ptr<dynamic::Map> World::serialize() const {
root->put("next-inventory-id", nextInventoryId);
return root;
}
}