refactor(config): separate game and server configuration with explicit paths

This commit is contained in:
2026-07-10 20:47:25 +08:00
parent 176df4ee04
commit 9a510d2319
9 changed files with 35 additions and 19 deletions

View File

@@ -55,7 +55,7 @@ public:
AudioEngine& audio();
private:
Config m_config;
Config m_game_config;
Camera m_camera;
TextureManager m_texture_manager;
NetworkServer m_server;

View File

@@ -5,7 +5,7 @@ namespace Cubed {
class Config {
public:
Config();
explicit Config(std::string_view path);
Config(const Config&) = delete;
Config(Config&&) = delete;
Config& operator=(const Config&) = delete;
@@ -54,8 +54,7 @@ public:
private:
toml::table m_tbl;
constexpr static inline std::string_view CONGIF_PATH =
ASSETS_PATH "config.toml";
const std::string CONGIF_PATH;
const toml::node* find_node(const toml::table& root,
std::string_view path) const;
// Follow the path to find the last-level toml::table, creating it if it

View File

@@ -1,4 +1,5 @@
#pragma once
#include "Cubed/config.hpp"
#include "Cubed/gameplay/server_world.hpp"
#include "Cubed/gameplay/session.hpp"
@@ -8,17 +9,19 @@ namespace Cubed {
class NetworkServer {
public:
NetworkServer(int port = 25530);
explicit NetworkServer();
~NetworkServer();
void stop();
// Run in another thread after initialization is complete
void start_server(int port = 25530);
void start_server(int port);
void start_server();
int port() const;
ServerWorld& server_world();
private:
Config m_config;
asio::io_context m_io;
std::thread m_net_thread;
int m_port = 25530;

View File

@@ -1,5 +1,6 @@
#pragma once
#include "Cubed/config.hpp"
#include "Cubed/gameplay/cave_carver.hpp"
#include "Cubed/gameplay/chunk_pos.hpp"
#include "Cubed/gameplay/game_time.hpp"
@@ -25,7 +26,7 @@ class Session;
class ServerWorld {
public:
enum class ThreadPoolKind { NET, GEN };
ServerWorld();
ServerWorld(Config& config);
~ServerWorld();
void stop();
void handle_player_exit(const std::string& uuid);
@@ -118,6 +119,9 @@ private:
using uuid_acc = PlayerUUIDMap::accessor;
using uuid_cacc = PlayerUUIDMap::const_accessor;
Config& m_config;
// key = uuid
PlayerHashMap m_players;
ChunkHashMap m_chunks;