Cytopia  0.3
A city building simulation game
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TerrainGenerator.hxx
Go to the documentation of this file.
1 #ifndef TERRAIN_GEN_HXX_
2 #define TERRAIN_GEN_HXX_
3 
4 #include "../GameObjects/MapNode.hxx"
5 
6 #include <map>
7 #include <vector>
8 
9 struct BiomeData
10 {
11  std::vector<std::string> terrain;
12  std::vector<std::string> water;
13  std::vector<std::string> waterDecoration;
14  std::vector<std::string> waterFloraLight;
15  std::vector<std::string> waterFloraMedium;
16  std::vector<std::string> waterFloraDense;
17  std::vector<std::string> terrainRocks;
18  std::vector<std::string> terrainDecoration;
19  std::vector<std::string> terrainFloraLight;
20  std::vector<std::string> terrainFloraMedium;
21  std::vector<std::string> terrainFloraDense;
22  std::vector<std::string> bushesLight;
23  std::vector<std::string> bushesMedium;
24  std::vector<std::string> bushesDense;
25  std::vector<std::string> treesLight;
26  std::vector<std::string> treesMedium;
27  std::vector<std::string> treesDense;
28 };
29 
31 {
32  int mapSize = 128;
33  int seed = 0;
34  int seaLevel = 3;
35  int maxHeight = 32;
36  int treeDensity = 50;
38  10;
39  int waterAmount = 5;
40  int coasts =
41  1;
42  int rivers = 1;
45 };
46 
48 {
49 public:
50  TerrainGenerator() = default;
51  ~TerrainGenerator() = default;
52 
53  void generateTerrain(std::vector<MapNode> &mapNodes, std::vector<MapNode *> &mapNodesInDrawingOrder);
54  void generateRiver(std::vector<MapNode> &mapNodes);
55 
57 
58 private:
60 
61  std::map<std::string, BiomeData> m_biomeInformation;
62  std::vector<Point> m_riverSourceNodes;
63 };
64 
65 #endif
BiomeData::bushesLight
std::vector< std::string > bushesLight
Bushes Light IDs.
Definition: TerrainGenerator.hxx:22
BiomeData::terrain
std::vector< std::string > terrain
Terrain IDs.
Definition: TerrainGenerator.hxx:11
BiomeData::treesMedium
std::vector< std::string > treesMedium
Trees Medium IDs.
Definition: TerrainGenerator.hxx:26
TerrainSettings::mountainAmplitude
int mountainAmplitude
Both amplifies the mountain noise source, as well as biasing the mountain/plains blend....
Definition: TerrainGenerator.hxx:37
TerrainSettings
Definition: TerrainGenerator.hxx:30
TerrainSettings::seed
int seed
If the seed is 0, a random seed will be generated by TerrainGenerator::generateTerrain()
Definition: TerrainGenerator.hxx:33
TerrainSettings::rivers
int rivers
Number of rivers to attempt generating.
Definition: TerrainGenerator.hxx:42
BiomeData::treesDense
std::vector< std::string > treesDense
Trees Dense IDs.
Definition: TerrainGenerator.hxx:27
TerrainSettings::biomes
std::string biomes
JSON string of biomes to attempt using, plus any options associated with them.
Definition: TerrainGenerator.hxx:43
BiomeData::waterFloraLight
std::vector< std::string > waterFloraLight
Water Flora Light IDs.
Definition: TerrainGenerator.hxx:14
TerrainSettings::waterAmount
int waterAmount
Density of freshwater in addition to coastlines and rivers. Expects 0-100.
Definition: TerrainGenerator.hxx:39
TerrainSettings::treeDensity
int treeDensity
0% no trees, 100% All trees everywhere all the time.
Definition: TerrainGenerator.hxx:36
TerrainGenerator::generateTerrain
void generateTerrain(std::vector< MapNode > &mapNodes, std::vector< MapNode * > &mapNodesInDrawingOrder)
Definition: TerrainGenerator.cxx:21
TerrainGenerator::m_riverSourceNodes
std::vector< Point > m_riverSourceNodes
Definition: TerrainGenerator.hxx:62
BiomeData::terrainRocks
std::vector< std::string > terrainRocks
Terrain Rocks IDs.
Definition: TerrainGenerator.hxx:17
BiomeData::water
std::vector< std::string > water
Water IDs.
Definition: TerrainGenerator.hxx:12
BiomeData::treesLight
std::vector< std::string > treesLight
Trees Light IDs.
Definition: TerrainGenerator.hxx:25
TerrainGenerator::m_biomeInformation
std::map< std::string, BiomeData > m_biomeInformation
key: biome
Definition: TerrainGenerator.hxx:61
BiomeData::waterDecoration
std::vector< std::string > waterDecoration
Water Decoration IDs.
Definition: TerrainGenerator.hxx:13
TerrainGenerator::generateRiver
void generateRiver(std::vector< MapNode > &mapNodes)
Definition: TerrainGenerator.cxx:179
BiomeData::terrainFloraDense
std::vector< std::string > terrainFloraDense
Terrain Flora (Flowers) Dense IDs.
Definition: TerrainGenerator.hxx:21
TerrainGenerator
Definition: TerrainGenerator.hxx:47
TerrainGenerator::m_terrainSettings
TerrainSettings m_terrainSettings
Definition: TerrainGenerator.hxx:59
TerrainSettings::maxHeight
int maxHeight
Definition: TerrainGenerator.hxx:35
TerrainSettings::mapSize
int mapSize
Definition: TerrainGenerator.hxx:32
BiomeData::waterFloraMedium
std::vector< std::string > waterFloraMedium
Water Flora Medium IDs.
Definition: TerrainGenerator.hxx:15
TerrainGenerator::TerrainGenerator
TerrainGenerator()=default
TerrainGenerator::loadTerrainDataFromJSON
void loadTerrainDataFromJSON()
Definition: TerrainGenerator.cxx:250
TerrainSettings::coasts
int coasts
4 least significant bits are bitmasked, where 0 is a land border and 1 is a coastline....
Definition: TerrainGenerator.hxx:40
BiomeData::bushesMedium
std::vector< std::string > bushesMedium
Bushes Medium IDs.
Definition: TerrainGenerator.hxx:23
BiomeData::terrainDecoration
std::vector< std::string > terrainDecoration
Terrain Decoration IDs.
Definition: TerrainGenerator.hxx:18
TerrainSettings::advanced
std::string advanced
JSON string of arbitrary advanced option data for future use or mods.
Definition: TerrainGenerator.hxx:44
BiomeData::terrainFloraMedium
std::vector< std::string > terrainFloraMedium
Terrain Flora (Flowers) Medium IDs.
Definition: TerrainGenerator.hxx:20
TerrainSettings::seaLevel
int seaLevel
All tiles with elevation below this will be set as water.
Definition: TerrainGenerator.hxx:34
BiomeData::terrainFloraLight
std::vector< std::string > terrainFloraLight
Terrain Flora (Flowers) Light IDs.
Definition: TerrainGenerator.hxx:19
BiomeData
Definition: TerrainGenerator.hxx:9
string
std::string string
Definition: AudioConfig.hxx:14
TerrainGenerator::~TerrainGenerator
~TerrainGenerator()=default
BiomeData::waterFloraDense
std::vector< std::string > waterFloraDense
Water Flora Dense IDs.
Definition: TerrainGenerator.hxx:16
BiomeData::bushesDense
std::vector< std::string > bushesDense
Bushes Dense IDs.
Definition: TerrainGenerator.hxx:24