From d02df740ef0f8949de8bdf096c0079b702d26288 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Sun, 27 May 2012 11:07:23 +0000 Subject: [PATCH] Restructured biome generators with a list of available biomes to use a common ancestor (preparation for Voronoi and DistortedVoronoi) git-svn-id: http://mc-server.googlecode.com/svn/trunk@508 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/BioGen.cpp | 7 +++++-- source/BioGen.h | 34 +++++++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 11 deletions(-) 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; } ;