From ee9e024bed46b794bfa035058127ab93131b2780 Mon Sep 17 00:00:00 2001 From: faketruth Date: Wed, 13 Jun 2012 15:52:28 +0000 Subject: I think the chunk generation hooks for Lua are pretty good now, though it might still need some tweaking git-svn-id: http://mc-server.googlecode.com/svn/trunk@600 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cLuaChunk.h | 126 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 113 insertions(+), 13 deletions(-) (limited to 'source/cLuaChunk.h') diff --git a/source/cLuaChunk.h b/source/cLuaChunk.h index 5e1395a4c..70aa4e615 100644 --- a/source/cLuaChunk.h +++ b/source/cLuaChunk.h @@ -14,26 +14,126 @@ public: , m_BlockTypes( a_BlockTypes ) , m_BlockMeta( a_BlockNibbles ) , m_HeightMap( a_HeightMap ) - {} + , m_bUseDefaultBiomes( false ) + , m_bUseDefaultComposition( false ) + , m_bUseDefaultStructures( false ) + , m_bUseDefaultFinish( false ) + { + 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 ) ); + } ~cLuaChunk() {} - void SetBlock( const Vector3i & a_Pos, char a_BlockID, unsigned char a_BlockMeta ) //tolua_export - { //tolua_export - } //tolua_export + //tolua_begin - void FillBlocks( char a_BlockID, unsigned char a_BlockMeta ) //tolua_export - { //tolua_export + // Block functions + void FillBlocks( char a_BlockID, unsigned char a_BlockMeta ) + { const NIBBLETYPE CompressedMeta = a_BlockMeta | a_BlockMeta << 4; memset( m_BlockTypes, a_BlockID, sizeof( cChunkDef::BlockTypes ) ); memset( m_BlockMeta, CompressedMeta, sizeof( cChunkDef::BlockNibbles ) ); + } + + void SetBlock( int a_X, int a_Y, int a_Z, char a_BlockID, unsigned char a_BlockMeta ) + { + cChunkDef::SetBlock( m_BlockTypes, a_X, a_Y, a_Z, a_BlockID ); + cChunkDef::SetNibble( m_BlockMeta, a_X, a_Y, a_Z, a_BlockMeta ); + } + + char GetBlock( int a_X, int a_Y, int a_Z ) + { + return cChunkDef::GetBlock( m_BlockTypes, a_X, a_Y, a_Z ); + } + + char 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() + { + return m_bUseDefaultBiomes; + } + + void SetUseDefaultComposition( bool a_bUseDefaultComposition ) + { + m_bUseDefaultComposition = a_bUseDefaultComposition; + } + bool IsUsingDefaultComposition() + { + return m_bUseDefaultComposition; + } + + void SetUseDefaultStructures( bool a_bUseDefaultStructures ) + { + m_bUseDefaultStructures = a_bUseDefaultStructures; + } + bool IsUsingDefaultStructures() + { + return m_bUseDefaultStructures; + } + + void SetUseDefaultFinish( bool a_bUseDefaultFinish ) + { + m_bUseDefaultFinish = a_bUseDefaultFinish; + } + bool IsUsingDefaultFinish() + { + return m_bUseDefaultFinish; + } + + //tolua_end - memset( m_BiomeMap, 0, sizeof( cChunkDef::BiomeMap ) ); - memset( m_HeightMap, 0, sizeof( cChunkDef::HeightMap ) ); - } //tolua_export private: - EMCSBiome * m_BiomeMap; - BLOCKTYPE * m_BlockTypes; - NIBBLETYPE * m_BlockMeta; - HEIGHTTYPE * m_HeightMap; + bool m_bUseDefaultBiomes; + 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 \ No newline at end of file -- cgit v1.2.3