2960f43782
Splitting off the Composable generator and fiddling with LuaChunk / ChunkDesc is good, other generators not good yet. git-svn-id: http://mc-server.googlecode.com/svn/trunk@1171 0a769ca7-a7f5-676a-18bf-c427514a06d6
192 lines
4.0 KiB
C++
192 lines
4.0 KiB
C++
|
|
// 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
|
|
|
|
|
|
|
|
|