Prepared cChunkDesc for further API extension; used it as the sole container for generated chunk data, including entities / block entities.
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1200 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
+42
-148
@@ -15,175 +15,69 @@
|
||||
|
||||
|
||||
|
||||
class cChunkDesc // tolua_export
|
||||
{ // tolua_export
|
||||
// tolua_begin
|
||||
class cChunkDesc
|
||||
{
|
||||
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));
|
||||
}
|
||||
// tolua_end
|
||||
|
||||
~cChunkDesc()
|
||||
{}
|
||||
cChunkDesc(void);
|
||||
~cChunkDesc();
|
||||
|
||||
// tolua_begin
|
||||
|
||||
void FillBlocks(BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta);
|
||||
void SetBlock(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta);
|
||||
|
||||
|
||||
// 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;
|
||||
}
|
||||
void SetBlockType(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockType);
|
||||
BLOCKTYPE GetBlockType(int a_RelX, int a_RelY, int a_RelZ);
|
||||
|
||||
|
||||
bool IsUsingDefaultBiomes(void) const
|
||||
{
|
||||
return m_bUseDefaultBiomes;
|
||||
}
|
||||
void SetBlockMeta(int a_RelX, int a_RelY, int a_RelZ, NIBBLETYPE a_BlockMeta);
|
||||
NIBBLETYPE GetBlockMeta(int a_RelX, int a_RelY, int a_RelZ);
|
||||
|
||||
void SetBiome(int a_RelX, int a_RelZ, int a_BiomeID);
|
||||
EMCSBiome GetBiome(int a_RelX, int a_RelZ);
|
||||
|
||||
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 SetHeight(int a_RelX, int a_RelZ, int a_Height);
|
||||
int GetHeight(int a_RelX, int a_RelZ);
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
// Default generation:
|
||||
void SetUseDefaultBiomes(bool a_bUseDefaultBiomes);
|
||||
bool IsUsingDefaultBiomes(void) const;
|
||||
void SetUseDefaultHeight(bool a_bUseDefaultHeight);
|
||||
bool IsUsingDefaultHeight(void) const;
|
||||
void SetUseDefaultComposition(bool a_bUseDefaultComposition);
|
||||
bool IsUsingDefaultComposition(void) const;
|
||||
void SetUseDefaultStructures(bool a_bUseDefaultStructures);
|
||||
bool IsUsingDefaultStructures(void) const;
|
||||
void SetUseDefaultFinish(bool a_bUseDefaultFinish);
|
||||
bool IsUsingDefaultFinish(void) const;
|
||||
|
||||
// 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; }
|
||||
|
||||
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; }
|
||||
cEntityList & GetEntities (void) { return m_Entities; }
|
||||
cBlockEntityList & GetBlockEntities(void) { return m_BlockEntities; }
|
||||
|
||||
private:
|
||||
cChunkDef::BiomeMap m_BiomeMap;
|
||||
cChunkDef::BlockTypes m_BlockTypes;
|
||||
cChunkDef::BlockNibbles m_BlockMeta;
|
||||
cChunkDef::HeightMap m_HeightMap;
|
||||
cEntityList m_Entities; // Individual entities are NOT owned by this object!
|
||||
cBlockEntityList m_BlockEntities; // Individual block entities are NOT owned by this object!
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user