51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <toml.h>
|
|
#include "world/Universe.hpp"
|
|
|
|
namespace config::server {
|
|
|
|
struct options {
|
|
public:
|
|
options(toml::node_view<toml::node> config): world() {
|
|
assert(config["enabled"]);
|
|
#ifndef STANDALONE
|
|
allowLocal = config["allow_local"].value_or(allowLocal);
|
|
#else
|
|
allowLocal = false;
|
|
#endif
|
|
|
|
world.connection.address = config["connection"]["address"].value_or(world.connection.address);
|
|
world.connection.port = config["connection"]["port"].value_or(world.connection.port);
|
|
world.maxPlayers = config["max_players"].value_or(world.maxPlayers);
|
|
|
|
world.loadDistance = config["world"]["load_distance"].value_or(world.loadDistance);
|
|
world.keepDistance = config["world"]["keep_distance"].value_or(world.keepDistance);
|
|
world.folderPath = config["world"]["path"].value_or(world.folderPath);
|
|
}
|
|
|
|
toml::table save() {
|
|
return toml::table({
|
|
{"enabled", true},
|
|
#ifndef STANDALONE
|
|
{"allow_local", allowLocal},
|
|
#endif
|
|
{"connection", toml::table({
|
|
{"address", world.connection.address},
|
|
{"port", world.connection.port}
|
|
})},
|
|
{"max_players", world.maxPlayers},
|
|
{"world", toml::table({
|
|
{"load_distance", world.loadDistance},
|
|
{"keep_distance", world.keepDistance},
|
|
{"path", world.folderPath}
|
|
})}
|
|
});
|
|
}
|
|
|
|
/// enable SharedServerUniverse and LocalClientUniverse
|
|
bool allowLocal = true;
|
|
world::server::Universe::options world;
|
|
};
|
|
|
|
} |