diff --git a/source/BioGen.cpp b/source/BioGen.cpp index 82a937f4f..9073ad721 100644 --- a/source/BioGen.cpp +++ b/source/BioGen.cpp @@ -43,9 +43,9 @@ void cBioGenDistortedVoronoi::GenBiomes(int a_ChunkX, int a_ChunkZ, cChunkDef::B /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// cBioGenCheckerboard: +// cBiomeGenList: -void cBioGenCheckerboard::InitializeBiomes(const AString & a_Biomes) +void cBiomeGenList::InitializeBiomes(const AString & a_Biomes) { AStringVector Split = StringSplit(a_Biomes, ","); @@ -101,6 +101,9 @@ void cBioGenCheckerboard::InitializeBiomes(const AString & a_Biomes) +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// cBioGenCheckerboard: + void cBioGenCheckerboard::GenBiomes(int a_ChunkX, int a_ChunkZ, cChunkDef::BiomeMap & a_BiomeMap) { for (int z = 0; z < cChunkDef::Width; z++) diff --git a/source/BioGen.h b/source/BioGen.h index b44d8fdf4..659470af2 100644 --- a/source/BioGen.h +++ b/source/BioGen.h @@ -56,27 +56,43 @@ protected: -class cBioGenCheckerboard : +/// Base class for generators that use a list of available biomes. This class takes care of the list. +class cBiomeGenList : public cBiomeGen { +protected: + cBiomeGenList(const AString & a_Biomes) + { + InitializeBiomes(a_Biomes); + } + + // List of biomes that the generator is allowed to generate: + typedef std::vector EMCSBiomes; + EMCSBiomes m_Biomes; + int m_BiomesCount; // Pulled out of m_Biomes for faster access + + void InitializeBiomes(const AString & a_Biomes); + +} ; + + + + + +class cBioGenCheckerboard : + public cBiomeGenList +{ public: cBioGenCheckerboard(int a_BiomeSize, const AString & a_Biomes) : + cBiomeGenList(a_Biomes), m_BiomeSize((a_BiomeSize < 8) ? 8 : a_BiomeSize) { - InitializeBiomes(a_Biomes); } protected: int m_BiomeSize; - // List of biomes that the generator is allowed to generate: - typedef std::vector EMCSBiomes; - EMCSBiomes m_Biomes; - int m_BiomesCount; - - void InitializeBiomes(const AString & a_Biomes); - // cBiomeGen override: virtual void GenBiomes(int a_ChunkX, int a_ChunkZ, cChunkDef::BiomeMap & a_BiomeMap) override; } ;