#ifndef OGLG_TERRAIN_H_ #define OGLG_TERRAIN_H_ #include "logic/GameBoard.h" #include "pc/Point.h" #include "pc/commcode.h" #include "pc/pctypes.h" #include #include class BadImportTerrainConfig : std::exception { public: BadImportTerrainConfig(size_t); virtual ~BadImportTerrainConfig() = default; virtual const char* what() const noexcept override; private: size_t pt; }; class BadCapitalAssign : std::exception { public: virtual ~BadCapitalAssign() = default; virtual const char* what() const noexcept override; }; class ImportedTerrain { public: friend ImportedTerrain importTerrain(const ImportTerrainConfig& in); GameBoard makeGameBoard(const InitInfo& init_info); private: struct TerrainTile { TileType type; std::int32_t unit; }; pos_t w, h; std::vector> tiles; std::vector>> capitals; }; ImportedTerrain importTerrain(const ImportTerrainConfig& in); #endif