summaryrefslogtreecommitdiffstats
path: root/src/Generating/CompoGenBiomal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Generating/CompoGenBiomal.cpp')
-rw-r--r--src/Generating/CompoGenBiomal.cpp68
1 files changed, 23 insertions, 45 deletions
diff --git a/src/Generating/CompoGenBiomal.cpp b/src/Generating/CompoGenBiomal.cpp
index 6d2277819..951cb1a64 100644
--- a/src/Generating/CompoGenBiomal.cpp
+++ b/src/Generating/CompoGenBiomal.cpp
@@ -27,30 +27,28 @@ class cPattern
public:
struct BlockInfo
{
- BLOCKTYPE m_BlockType;
- NIBBLETYPE m_BlockMeta;
+ BLOCKTYPE m_BlockType = E_BLOCK_STONE;
+ NIBBLETYPE m_BlockMeta = 0;
};
- cPattern(BlockInfo * a_TopBlocks, size_t a_Count)
+ constexpr cPattern(std::initializer_list<BlockInfo> a_TopBlocks)
{
+ ASSERT(a_TopBlocks.size() <= cChunkDef::Height);
// Copy the pattern into the top:
- for (size_t i = 0; i < a_Count; i++)
+ size_t i = 0;
+ for (const auto & Block : a_TopBlocks)
{
- m_Pattern[i] = a_TopBlocks[i];
+ m_Pattern[i] = Block;
+ ++i;
}
- // Fill the rest with stone:
- static BlockInfo Stone = {E_BLOCK_STONE, 0};
- for (int i = static_cast<int>(a_Count); i < cChunkDef::Height; i++)
- {
- m_Pattern[i] = Stone;
- }
+ // The remaining blocks default to stone
}
const BlockInfo * Get(void) const { return m_Pattern; }
protected:
- BlockInfo m_Pattern[cChunkDef::Height];
+ BlockInfo m_Pattern[cChunkDef::Height] = {};
} ;
@@ -58,9 +56,9 @@ protected:
////////////////////////////////////////////////////////////////////////////////
-// The arrays to use for the top block pattern definitions:
+// Land top block patterns:
-static cPattern::BlockInfo tbGrass[] =
+static constexpr cPattern patGrass =
{
{E_BLOCK_GRASS, 0},
{E_BLOCK_DIRT, E_META_DIRT_NORMAL},
@@ -68,7 +66,7 @@ static cPattern::BlockInfo tbGrass[] =
{E_BLOCK_DIRT, E_META_DIRT_NORMAL},
} ;
-static cPattern::BlockInfo tbSand[] =
+static constexpr cPattern patSand =
{
{ E_BLOCK_SAND, 0},
{ E_BLOCK_SAND, 0},
@@ -76,7 +74,7 @@ static cPattern::BlockInfo tbSand[] =
{ E_BLOCK_SANDSTONE, 0},
} ;
-static cPattern::BlockInfo tbDirt[] =
+static constexpr cPattern patDirt =
{
{E_BLOCK_DIRT, E_META_DIRT_NORMAL},
{E_BLOCK_DIRT, E_META_DIRT_NORMAL},
@@ -84,7 +82,7 @@ static cPattern::BlockInfo tbDirt[] =
{E_BLOCK_DIRT, E_META_DIRT_NORMAL},
} ;
-static cPattern::BlockInfo tbPodzol[] =
+static constexpr cPattern patPodzol =
{
{E_BLOCK_DIRT, E_META_DIRT_PODZOL},
{E_BLOCK_DIRT, E_META_DIRT_NORMAL},
@@ -92,7 +90,7 @@ static cPattern::BlockInfo tbPodzol[] =
{E_BLOCK_DIRT, E_META_DIRT_NORMAL},
} ;
-static cPattern::BlockInfo tbGrassLess[] =
+static constexpr cPattern patGrassLess =
{
{E_BLOCK_DIRT, E_META_DIRT_GRASSLESS},
{E_BLOCK_DIRT, E_META_DIRT_NORMAL},
@@ -100,7 +98,7 @@ static cPattern::BlockInfo tbGrassLess[] =
{E_BLOCK_DIRT, E_META_DIRT_NORMAL},
} ;
-static cPattern::BlockInfo tbMycelium[] =
+static constexpr cPattern patMycelium =
{
{E_BLOCK_MYCELIUM, 0},
{E_BLOCK_DIRT, 0},
@@ -108,7 +106,7 @@ static cPattern::BlockInfo tbMycelium[] =
{E_BLOCK_DIRT, 0},
} ;
-static cPattern::BlockInfo tbGravel[] =
+static constexpr cPattern patGravel =
{
{E_BLOCK_GRAVEL, 0},
{E_BLOCK_GRAVEL, 0},
@@ -116,7 +114,7 @@ static cPattern::BlockInfo tbGravel[] =
{E_BLOCK_STONE, 0},
} ;
-static cPattern::BlockInfo tbStone[] =
+static constexpr cPattern patStone =
{
{E_BLOCK_STONE, 0},
{E_BLOCK_STONE, 0},
@@ -127,9 +125,9 @@ static cPattern::BlockInfo tbStone[] =
////////////////////////////////////////////////////////////////////////////////
-// Ocean floor pattern top-block definitions:
+// Ocean floor patterns:
-static cPattern::BlockInfo tbOFSand[] =
+static constexpr cPattern patOFSand =
{
{E_BLOCK_SAND, 0},
{E_BLOCK_SAND, 0},
@@ -137,7 +135,7 @@ static cPattern::BlockInfo tbOFSand[] =
{E_BLOCK_SANDSTONE, 0}
} ;
-static cPattern::BlockInfo tbOFClay[] =
+static constexpr cPattern patOFClay =
{
{ E_BLOCK_CLAY, 0},
{ E_BLOCK_CLAY, 0},
@@ -145,7 +143,7 @@ static cPattern::BlockInfo tbOFClay[] =
{ E_BLOCK_SAND, 0},
} ;
-static cPattern::BlockInfo tbOFOrangeClay[] =
+static constexpr cPattern patOFOrangeClay =
{
{ E_BLOCK_STAINED_CLAY, E_META_STAINED_GLASS_ORANGE},
{ E_BLOCK_STAINED_CLAY, E_META_STAINED_GLASS_ORANGE},
@@ -157,26 +155,6 @@ static cPattern::BlockInfo tbOFOrangeClay[] =
////////////////////////////////////////////////////////////////////////////////
-// Individual patterns to use:
-
-static cPattern patGrass (tbGrass, ARRAYCOUNT(tbGrass));
-static cPattern patSand (tbSand, ARRAYCOUNT(tbSand));
-static cPattern patDirt (tbDirt, ARRAYCOUNT(tbDirt));
-static cPattern patPodzol (tbPodzol, ARRAYCOUNT(tbPodzol));
-static cPattern patGrassLess(tbGrassLess, ARRAYCOUNT(tbGrassLess));
-static cPattern patMycelium (tbMycelium, ARRAYCOUNT(tbMycelium));
-static cPattern patGravel (tbGravel, ARRAYCOUNT(tbGravel));
-static cPattern patStone (tbStone, ARRAYCOUNT(tbStone));
-
-static cPattern patOFSand (tbOFSand, ARRAYCOUNT(tbOFSand));
-static cPattern patOFClay (tbOFClay, ARRAYCOUNT(tbOFClay));
-static cPattern patOFOrangeClay(tbOFOrangeClay, ARRAYCOUNT(tbOFOrangeClay));
-
-
-
-
-
-////////////////////////////////////////////////////////////////////////////////
// cCompoGenBiomal:
class cCompoGenBiomal :