Added RainbowRoads finisher generator.
This commit is contained in:
parent
d5649df326
commit
ec40c7c83a
@ -24,6 +24,7 @@
|
|||||||
#include "NetherFortGen.h"
|
#include "NetherFortGen.h"
|
||||||
#include "Noise3DGenerator.h"
|
#include "Noise3DGenerator.h"
|
||||||
#include "POCPieceGenerator.h"
|
#include "POCPieceGenerator.h"
|
||||||
|
#include "RainbowRoadsGen.h"
|
||||||
#include "Ravines.h"
|
#include "Ravines.h"
|
||||||
#include "UnderwaterBaseGen.h"
|
#include "UnderwaterBaseGen.h"
|
||||||
#include "VillageGen.h"
|
#include "VillageGen.h"
|
||||||
@ -391,6 +392,13 @@ void cComposableGenerator::InitFinishGens(cIniFile & a_IniFile)
|
|||||||
{
|
{
|
||||||
m_FinishGens.push_back(new cFinishGenPreSimulator);
|
m_FinishGens.push_back(new cFinishGenPreSimulator);
|
||||||
}
|
}
|
||||||
|
else if (NoCaseCompare(*itr, "RainbowRoads") == 0)
|
||||||
|
{
|
||||||
|
int GridSize = a_IniFile.GetValueSetI("Generator", "RainbowRoadsGridSize", 512);
|
||||||
|
int MaxDepth = a_IniFile.GetValueSetI("Generator", "RainbowRoadsMaxDepth", 30);
|
||||||
|
int MaxSize = a_IniFile.GetValueSetI("Generator", "RainbowRoadsMaxSize", 260);
|
||||||
|
m_FinishGens.push_back(new cRainbowRoadsGen(Seed, GridSize, MaxDepth, MaxSize));
|
||||||
|
}
|
||||||
else if (NoCaseCompare(*itr, "Ravines") == 0)
|
else if (NoCaseCompare(*itr, "Ravines") == 0)
|
||||||
{
|
{
|
||||||
m_FinishGens.push_back(new cStructGenRavines(Seed, 128));
|
m_FinishGens.push_back(new cStructGenRavines(Seed, 128));
|
||||||
@ -409,9 +417,9 @@ void cComposableGenerator::InitFinishGens(cIniFile & a_IniFile)
|
|||||||
}
|
}
|
||||||
else if (NoCaseCompare(*itr, "UnderwaterBases") == 0)
|
else if (NoCaseCompare(*itr, "UnderwaterBases") == 0)
|
||||||
{
|
{
|
||||||
int GridSize = a_IniFile.GetValueSetI("Generator", "UnderwaterBaseGridSize", 1024);
|
int GridSize = a_IniFile.GetValueSetI("Generator", "UnderwaterBaseGridSize", 1024);
|
||||||
int MaxDepth = a_IniFile.GetValueSetI("Generator", "UnderwaterBaseMaxDepth", 7);
|
int MaxDepth = a_IniFile.GetValueSetI("Generator", "UnderwaterBaseMaxDepth", 7);
|
||||||
int MaxSize = a_IniFile.GetValueSetI("Generator", "UnderwaterBaseMaxSize", 128);
|
int MaxSize = a_IniFile.GetValueSetI("Generator", "UnderwaterBaseMaxSize", 128);
|
||||||
m_FinishGens.push_back(new cUnderwaterBaseGen(Seed, GridSize, MaxDepth, MaxSize, *m_BiomeGen));
|
m_FinishGens.push_back(new cUnderwaterBaseGen(Seed, GridSize, MaxDepth, MaxSize, *m_BiomeGen));
|
||||||
}
|
}
|
||||||
else if (NoCaseCompare(*itr, "Villages") == 0)
|
else if (NoCaseCompare(*itr, "Villages") == 0)
|
||||||
|
1406
src/Generating/Prefabs/RainbowRoadPrefabs.cpp
Normal file
1406
src/Generating/Prefabs/RainbowRoadPrefabs.cpp
Normal file
File diff suppressed because it is too large
Load Diff
15
src/Generating/Prefabs/RainbowRoadPrefabs.h
Normal file
15
src/Generating/Prefabs/RainbowRoadPrefabs.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
// RainbowRoadPrefabs.h
|
||||||
|
|
||||||
|
// Declares the prefabs in the group RainbowRoad
|
||||||
|
|
||||||
|
#include "../Prefab.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
extern const cPrefab::sDef g_RainbowRoadPrefabs[];
|
||||||
|
extern const cPrefab::sDef g_RainbowRoadStartingPrefabs[];
|
||||||
|
extern const size_t g_RainbowRoadPrefabsCount;
|
||||||
|
extern const size_t g_RainbowRoadStartingPrefabsCount;
|
115
src/Generating/RainbowRoadsGen.cpp
Normal file
115
src/Generating/RainbowRoadsGen.cpp
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
|
||||||
|
// RainbowRoadsGen.cpp
|
||||||
|
|
||||||
|
// Implements the cRainbowRoadsGen class representing the rainbow road generator
|
||||||
|
|
||||||
|
#include "Globals.h"
|
||||||
|
#include "RainbowRoadsGen.h"
|
||||||
|
#include "Prefabs/RainbowRoadPrefabs.h"
|
||||||
|
#include "PieceGenerator.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static cPrefabPiecePool g_RainbowRoads(g_RainbowRoadPrefabs, g_RainbowRoadPrefabsCount, g_RainbowRoadStartingPrefabs, g_RainbowRoadStartingPrefabsCount);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// cRainbowRoadsGen::cRainbowRoads:
|
||||||
|
|
||||||
|
class cRainbowRoadsGen::cRainbowRoads :
|
||||||
|
public cGridStructGen::cStructure
|
||||||
|
{
|
||||||
|
typedef cGridStructGen::cStructure super;
|
||||||
|
|
||||||
|
public:
|
||||||
|
cRainbowRoads(
|
||||||
|
int a_Seed,
|
||||||
|
int a_OriginX, int a_OriginZ,
|
||||||
|
int a_MaxDepth,
|
||||||
|
int a_MaxSize
|
||||||
|
) :
|
||||||
|
super(a_OriginX, a_OriginZ),
|
||||||
|
m_Seed(a_Seed),
|
||||||
|
m_Noise(a_Seed),
|
||||||
|
m_MaxSize(a_MaxSize),
|
||||||
|
m_Borders(a_OriginX - a_MaxSize, 0, a_OriginZ - a_MaxSize, a_OriginX + a_MaxSize, 255, a_OriginZ + a_MaxSize)
|
||||||
|
{
|
||||||
|
// Generate the pieces for this base:
|
||||||
|
cBFSPieceGenerator pg(g_RainbowRoads, a_Seed);
|
||||||
|
pg.PlacePieces(a_OriginX, 190, a_OriginZ, a_MaxDepth, m_Pieces);
|
||||||
|
if (m_Pieces.empty())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
~cRainbowRoads()
|
||||||
|
{
|
||||||
|
cPieceGenerator::FreePieces(m_Pieces);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/** Seed for the random functions */
|
||||||
|
int m_Seed;
|
||||||
|
|
||||||
|
/** The noise used as a pseudo-random generator */
|
||||||
|
cNoise m_Noise;
|
||||||
|
|
||||||
|
/** Maximum size, in X/Z blocks, of the village (radius from the origin) */
|
||||||
|
int m_MaxSize;
|
||||||
|
|
||||||
|
/** Borders of the vilalge - no item may reach out of this cuboid. */
|
||||||
|
cCuboid m_Borders;
|
||||||
|
|
||||||
|
/** The village pieces, placed by the generator. */
|
||||||
|
cPlacedPieces m_Pieces;
|
||||||
|
|
||||||
|
|
||||||
|
// cGridStructGen::cStructure overrides:
|
||||||
|
virtual void DrawIntoChunk(cChunkDesc & a_Chunk) override
|
||||||
|
{
|
||||||
|
for (cPlacedPieces::iterator itr = m_Pieces.begin(), end = m_Pieces.end(); itr != end; ++itr)
|
||||||
|
{
|
||||||
|
cPrefab & Prefab = (cPrefab &)((*itr)->GetPiece());
|
||||||
|
Prefab.Draw(a_Chunk, *itr);
|
||||||
|
} // for itr - m_PlacedPieces[]
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// cRainbowRoadsGen:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cRainbowRoadsGen::cRainbowRoadsGen(int a_Seed, int a_GridSize, int a_MaxDepth, int a_MaxSize) :
|
||||||
|
super(a_Seed, a_GridSize, a_GridSize, a_MaxSize, a_MaxSize, 100),
|
||||||
|
m_Noise(a_Seed + 9000),
|
||||||
|
m_MaxDepth(a_MaxDepth),
|
||||||
|
m_MaxSize(a_MaxSize)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cGridStructGen::cStructurePtr cRainbowRoadsGen::CreateStructure(int a_OriginX, int a_OriginZ)
|
||||||
|
{
|
||||||
|
// Create a base based on the chosen prefabs:
|
||||||
|
return cStructurePtr(new cRainbowRoads(m_Seed, a_OriginX, a_OriginZ, m_MaxDepth, m_MaxSize));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
47
src/Generating/RainbowRoadsGen.h
Normal file
47
src/Generating/RainbowRoadsGen.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
// RainbowRoadsGen.h
|
||||||
|
|
||||||
|
// Declares the cRainbowRoadsGen class representing the underwater base generator
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "GridStructGen.h"
|
||||||
|
#include "PrefabPiecePool.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class cRainbowRoadsGen :
|
||||||
|
public cGridStructGen
|
||||||
|
{
|
||||||
|
typedef cGridStructGen super;
|
||||||
|
|
||||||
|
public:
|
||||||
|
cRainbowRoadsGen(int a_Seed, int a_GridSize, int a_MaxDepth, int a_MaxSize);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
class cRainbowRoads; // fwd: RainbowRoadsGen.cpp
|
||||||
|
|
||||||
|
|
||||||
|
/** The noise used for generating random numbers */
|
||||||
|
cNoise m_Noise;
|
||||||
|
|
||||||
|
/** Maximum depth of the generator tree*/
|
||||||
|
int m_MaxDepth;
|
||||||
|
|
||||||
|
/** Maximum size, in X/Z blocks, of the base (radius from the origin) */
|
||||||
|
int m_MaxSize;
|
||||||
|
|
||||||
|
|
||||||
|
// cGridStructGen overrides:
|
||||||
|
virtual cStructurePtr CreateStructure(int a_OriginX, int a_OriginZ) override;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user