diff options
Diffstat (limited to 'source/Generating/ChunkDesc.h')
-rw-r--r-- | source/Generating/ChunkDesc.h | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/source/Generating/ChunkDesc.h b/source/Generating/ChunkDesc.h new file mode 100644 index 000000000..02b67998a --- /dev/null +++ b/source/Generating/ChunkDesc.h @@ -0,0 +1,191 @@ + +// ChunkDesc.h + +// Declares the cChunkDesc class representing the chunk description used while generating a chunk. This class is also exported to Lua for HOOK_CHUNK_GENERATING. + + + + + +#pragma once + +#include "../ChunkDef.h" + + + + + +class cChunkDesc // tolua_export +{ // tolua_export +public: + cChunkDesc( + cChunkDef::BlockTypes & a_BlockTypes, + cChunkDef::BlockNibbles & a_BlockNibbles , + cChunkDef::HeightMap & a_HeightMap, + cChunkDef::BiomeMap & a_BiomeMap + ) + : m_BiomeMap(a_BiomeMap) + , m_BlockTypes(a_BlockTypes) + , m_BlockMeta(a_BlockNibbles) + , m_HeightMap(a_HeightMap) + , m_bUseDefaultBiomes(true) + , m_bUseDefaultHeight(true) + , m_bUseDefaultComposition(true) + , m_bUseDefaultStructures(true) + , m_bUseDefaultFinish(true) + { + memset(m_BlockTypes, 0, sizeof(cChunkDef::BlockTypes)); + memset(m_BlockMeta, 0, sizeof(cChunkDef::BlockNibbles)); + memset(m_BiomeMap, 0, sizeof(cChunkDef::BiomeMap)); + memset(m_HeightMap, 0, sizeof(cChunkDef::HeightMap)); + } + + ~cChunkDesc() + {} + + // tolua_begin + + + + // Block functions: + void FillBlocks(BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) + { + const NIBBLETYPE CompressedMeta = a_BlockMeta | a_BlockMeta << 4; + memset(m_BlockTypes, a_BlockType, sizeof(cChunkDef::BlockTypes)); + memset(m_BlockMeta, CompressedMeta, sizeof(cChunkDef::BlockNibbles)); + } + + + void SetBlock(int a_X, int a_Y, int a_Z, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) + { + cChunkDef::SetBlock( m_BlockTypes, a_X, a_Y, a_Z, a_BlockType ); + cChunkDef::SetNibble( m_BlockMeta, a_X, a_Y, a_Z, a_BlockMeta ); + } + + + BLOCKTYPE GetBlock( int a_X, int a_Y, int a_Z ) + { + return cChunkDef::GetBlock( m_BlockTypes, a_X, a_Y, a_Z ); + } + + + NIBBLETYPE GetBlockMeta( int a_X, int a_Y, int a_Z ) + { + return cChunkDef::GetNibble( m_BlockMeta, a_X, a_Y, a_Z ); + } + + + + // Biome functinos + void SetBiome( int a_X, int a_Z, int a_BiomeID ) + { + cChunkDef::SetBiome( m_BiomeMap, a_X, a_Z, (EMCSBiome)a_BiomeID ); + } + + + int GetBiome( int a_X, int a_Z ) + { + return cChunkDef::GetBiome( m_BiomeMap, a_X, a_Z ); + } + + + + // Height functions + void SetHeight( int a_X, int a_Z, int a_Height ) + { + cChunkDef::SetHeight( m_HeightMap, a_X, a_Z, a_Height ); + } + + + int GetHeight( int a_X, int a_Z ) + { + return cChunkDef::GetHeight( m_HeightMap, a_X, a_Z ); + } + + + + // Functions to explicitly tell the server to use default behavior for certain parts of generating terrain + void SetUseDefaultBiomes(bool a_bUseDefaultBiomes) + { + m_bUseDefaultBiomes = a_bUseDefaultBiomes; + } + + + bool IsUsingDefaultBiomes(void) const + { + return m_bUseDefaultBiomes; + } + + + void SetUseDefaultHeight(bool a_bUseDefaultHeight) + { + m_bUseDefaultHeight = a_bUseDefaultHeight; + } + + + bool IsUsingDefaultHeight(void) const + { + return m_bUseDefaultHeight; + } + + + void SetUseDefaultComposition(bool a_bUseDefaultComposition) + { + m_bUseDefaultComposition = a_bUseDefaultComposition; + } + + + bool IsUsingDefaultComposition(void) const + { + return m_bUseDefaultComposition; + } + + + void SetUseDefaultStructures(bool a_bUseDefaultStructures) + { + m_bUseDefaultStructures = a_bUseDefaultStructures; + } + + + bool IsUsingDefaultStructures(void) const + { + return m_bUseDefaultStructures; + } + + + void SetUseDefaultFinish(bool a_bUseDefaultFinish) + { + m_bUseDefaultFinish = a_bUseDefaultFinish; + } + + + bool IsUsingDefaultFinish(void) const + { + return m_bUseDefaultFinish; + } + + // tolua_end + + + // Accessors used by cChunkGenerator::Generator descendants: + cChunkDef::BiomeMap & GetBiomeMap (void) { return m_BiomeMap; } + cChunkDef::BlockTypes & GetBlockTypes(void) { return m_BlockTypes; } + cChunkDef::BlockNibbles & GetBlockMetas(void) { return m_BlockMeta; } + cChunkDef::HeightMap & GetHeightMap (void) { return m_HeightMap; } + +private: + bool m_bUseDefaultBiomes; + bool m_bUseDefaultHeight; + bool m_bUseDefaultComposition; + bool m_bUseDefaultStructures; + bool m_bUseDefaultFinish; + + cChunkDef::BiomeMap & m_BiomeMap; + cChunkDef::BlockTypes & m_BlockTypes; + cChunkDef::BlockNibbles & m_BlockMeta; + cChunkDef::HeightMap & m_HeightMap; +} ; // tolua_export + + + + |