45 lines
968 B
C++
45 lines
968 B
C++
#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 <exception>
|
|
#include <vector>
|
|
|
|
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<std::vector<TerrainTile>> tiles;
|
|
std::vector<std::vector<std::vector<Point>>> capitals;
|
|
};
|
|
|
|
ImportedTerrain importTerrain(const ImportTerrainConfig& in);
|
|
|
|
#endif
|