diff options
Diffstat (limited to 'src/Generating/UnderwaterBaseGen.cpp')
-rw-r--r-- | src/Generating/UnderwaterBaseGen.cpp | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/src/Generating/UnderwaterBaseGen.cpp b/src/Generating/UnderwaterBaseGen.cpp deleted file mode 100644 index c5066ca1b..000000000 --- a/src/Generating/UnderwaterBaseGen.cpp +++ /dev/null @@ -1,143 +0,0 @@ - -// UnderwaterBaseGen.cpp - -// Implements the cUnderwaterBaseGen class representing the underwater base generator - -#include "Globals.h" -#include "UnderwaterBaseGen.h" -#include "Prefabs/UnderwaterBasePrefabs.h" -#include "PieceGenerator.h" - - - - - -static cPrefabPiecePool g_UnderwaterBase(g_UnderwaterBasePrefabs, g_UnderwaterBasePrefabsCount, g_UnderwaterBaseStartingPrefabs, g_UnderwaterBaseStartingPrefabsCount); - - - - - -//////////////////////////////////////////////////////////////////////////////// -// cUnderwaterBaseGen::cUnderwaterBase: - -class cUnderwaterBaseGen::cUnderwaterBase : - public cGridStructGen::cStructure -{ - typedef cGridStructGen::cStructure super; - -public: - cUnderwaterBase( - int a_Seed, - int a_GridX, int a_GridZ, - int a_OriginX, int a_OriginZ, - int a_MaxDepth, - int a_MaxSize - ) : - super(a_GridX, a_GridZ, 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_UnderwaterBase, a_Seed); - pg.PlacePieces(a_OriginX, 50, a_OriginZ, a_MaxDepth, m_Pieces); - if (m_Pieces.empty()) - { - return; - } - } - - ~cUnderwaterBase() - { - 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 base (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) - { - const cPrefab & Prefab = static_cast<const cPrefab &>((*itr)->GetPiece()); - Prefab.Draw(a_Chunk, *itr); - } // for itr - m_PlacedPieces[] - } -} ; - - - - - -//////////////////////////////////////////////////////////////////////////////// -// cUnderwaterBaseGen: - - - - - -cUnderwaterBaseGen::cUnderwaterBaseGen(int a_Seed, int a_GridSize, int a_MaxOffset, int a_MaxDepth, int a_MaxSize, cBiomeGenPtr a_BiomeGen) : - super(a_Seed, a_GridSize, a_GridSize, a_MaxOffset, a_MaxOffset, a_MaxSize, a_MaxSize, 100), - m_Noise(a_Seed + 1000), - m_MaxDepth(a_MaxDepth), - m_MaxSize(a_MaxSize), - m_BiomeGen(a_BiomeGen) -{ -} - - - - - -cGridStructGen::cStructurePtr cUnderwaterBaseGen::CreateStructure(int a_GridX, int a_GridZ, int a_OriginX, int a_OriginZ) -{ - // Generate the biomes for the chunk surrounding the origin: - int ChunkX, ChunkZ; - cChunkDef::BlockToChunk(a_OriginX, a_OriginZ, ChunkX, ChunkZ); - cChunkDef::BiomeMap Biomes; - m_BiomeGen->GenBiomes(ChunkX, ChunkZ, Biomes); - - // Check if all the biomes are ocean: - // If just one is not, no base is created, because it's likely that an unfriendly biome is too close - for (size_t i = 0; i < ARRAYCOUNT(Biomes); i++) - { - switch (Biomes[i]) - { - case biOcean: - case biDeepOcean: - { - // These biomes allow underwater bases - break; - } - default: - { - // base-unfriendly biome, bail out with zero structure: - return cStructurePtr(); - } - } // switch (Biomes[i]) - } // for i - Biomes[] - - // Create a base based on the chosen prefabs: - return cStructurePtr(new cUnderwaterBase(m_Seed, a_GridX, a_GridZ, a_OriginX, a_OriginZ, m_MaxDepth, m_MaxSize)); -} - - - - |