#include "Server.hpp"
#include "../app/init.hpp"
+#include "../io/WorldSave.hpp"
#include "../model/CompositeModel.hpp"
#include "../world/ChunkIndex.hpp"
#include "../world/Entity.hpp"
DetachPlayer();
input.reset(new DirectInput(server.GetWorld(), player, server));
PlayerEntity().Ref();
+ if (server.GetWorldSave().Exists(player)) {
+ server.GetWorldSave().Read(player);
+ } else {
+ // TODO: spawn
+ }
old_base = PlayerChunks().Base();
Chunk::Pos begin = PlayerChunks().CoordsBegin();
void ClientConnection::DetachPlayer() {
if (!HasPlayer()) return;
cout << "player \"" << input->GetPlayer().Name() << "\" left" << endl;
+ server.GetWorldSave().Write(input->GetPlayer());
PlayerEntity().Kill();
PlayerEntity().UnRef();
input.reset();
}
-Server::Server(const Config::Network &conf, World &world)
+Server::Server(const Config::Network &conf, World &world, const WorldSave &save)
: serv_sock(nullptr)
, serv_pack{ -1, nullptr, 0 }
, clients()
, world(world)
+, save(save)
, player_model(nullptr) {
serv_sock = SDLNet_UDP_Open(conf.port);
if (!serv_sock) {