#pragma once #include #include "GameConfig.h" // Parses all simulation TOML files from a directory and returns a fully // populated, immutable GameConfig. Throws std::runtime_error on any parse or // validation failure; the exception message identifies the offending file, // field, or formula (see architecture.md "Config Loading"). // // Per-file helpers are exposed so tests can exercise individual loaders in // isolation. class ConfigLoader { public: static GameConfig loadFromDirectory(const std::string& configDir); static WorldConfig loadWorld(const std::string& path); static BuildingsConfig loadBuildings(const std::string& path); static RecipesConfig loadRecipes(const std::string& path); static ShipsConfig loadShips(const std::string& path); static StationsConfig loadStations(const std::string& path); static ModulesConfig loadModules(const std::string& path); };