#include "../app/Environment.hpp"
#include "../app/TextureIndex.hpp"
+#include "../io/WorldSave.hpp"
#include "../net/io.hpp"
#include <iostream>
const Config &config
)
: env(env)
+, shapes()
, block_types()
, world(block_types, wc)
, generator(gc)
, chunk_loader(world.Chunks(), generator, ws)
, skeletons()
-, spawner(world, skeletons, gc.seed)
-, server(config.net, world)
+, spawner(world, skeletons, env.rng)
+, server(config.net, world, wc, ws)
, loop_timer(16) {
TextureIndex tex_index;
- env.loader.LoadBlockTypes("default", block_types, tex_index);
+ env.loader.LoadShapes("default", shapes);
+ env.loader.LoadBlockTypes("default", block_types, tex_index, shapes);
+ generator.LoadTypes(block_types);
skeletons.LoadHeadless();
- spawner.LimitSkeletons(1, skeletons.Size());
+ spawner.LimitSkeletons(1, skeletons.size());
server.SetPlayerModel(skeletons[0]);
loop_timer.Start();
std::cout << "listening on UDP port " << config.net.port << std::endl;
}
+ServerState::~ServerState() {
+
+}
+
void ServerState::Handle(const SDL_Event &event) {
if (event.type == SDL_QUIT) {
+ std::cout << "saving remaining chunks" << std::endl;
+ for (Chunk &chunk : world.Chunks()) {
+ if (chunk.ShouldUpdateSave()) {
+ chunk_loader.SaveFile().Write(chunk);
+ }
+ }
env.state.PopAll();
}
}