139 lines
3.2 KiB
C
139 lines
3.2 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "ChunkDef.h"
|
||
|
|
||
|
class cLuaChunk //tolua_export
|
||
|
{ //tolua_export
|
||
|
public:
|
||
|
cLuaChunk( 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( 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()
|
||
|
{}
|
||
|
|
||
|
//tolua_begin
|
||
|
|
||
|
// 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
|
||
|
|
||
|
private:
|
||
|
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
|