blob: 0e36fe9d5408960cdbde6e4d6756be1326226b5c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
// PieceStructuresGen.h
// Declares the cPieceStructuresGen class representing the PieceStructures finisher generator
/*
This generator loads various pieces from "piecepool" files, and each such piecepool is then used in a separate
cPieceGenerator instance.
*/
#pragma once
#include "ComposableGenerator.h"
#include "PrefabPiecePool.h"
#include "GridStructGen.h"
class cPieceStructuresGen :
public cFinishGen
{
typedef cFinishGen Super;
public:
cPieceStructuresGen(int a_Seed);
/** Initializes the generator based on the specified prefab sets.
a_Prefabs contains the list of prefab sets that should be activated, "|"-separated.
All problems are logged to the console and the generator skips over them.
Returns true if at least one prefab set is valid (the generator should be kept). */
bool Initialize(const AString & a_Prefabs, int a_SeaLevel, cBiomeGenPtr a_BiomeGen, cTerrainHeightGenPtr a_HeightGen);
// cFinishGen override:
virtual void GenFinish(cChunkDesc & a_ChunkDesc) override;
protected:
/** The generator doing the work for a single prefab set.
Forward-declared so that its implementation changes don't affect the header. */
class cGen;
typedef SharedPtr<cGen> cGenPtr;
typedef std::vector<cGenPtr> cGenPtrs;
/** The individual structure generators, one per piecepool. */
cGenPtrs m_Gens;
/** The seed for the random number generator */
int m_Seed;
};
|