summaryrefslogtreecommitdiffstats
path: root/src/Generating/EnderDragonFightStructuresGen.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Generating/EnderDragonFightStructuresGen.h')
-rw-r--r--src/Generating/EnderDragonFightStructuresGen.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/Generating/EnderDragonFightStructuresGen.h b/src/Generating/EnderDragonFightStructuresGen.h
new file mode 100644
index 000000000..be6b2506e
--- /dev/null
+++ b/src/Generating/EnderDragonFightStructuresGen.h
@@ -0,0 +1,38 @@
+
+#pragma once
+
+/*
+https://minecraft.gamepedia.com/End_spike
+https://minecraft.gamepedia.com/End_Crystal
+https://minecraft.gamepedia.com/Ender_Dragon
+*/
+
+#include "FinishGen.h"
+
+class cEnderDragonFightStructuresGen :
+ public cFinishGen
+{
+public:
+ cEnderDragonFightStructuresGen(int a_Seed);
+ void Init(const AString & a_TowerProperties, int a_Radius);
+
+protected:
+ struct sTowerProperties
+ {
+ Vector3i m_Pos;
+ int m_Height;
+ int m_Radius;
+ bool m_HasCage;
+ };
+
+ cNoise m_Noise;
+ std::map<cChunkCoords, std::vector<sTowerProperties>> m_TowerPos;
+ static const std::array<Vector3i, 48> m_CagePos;
+ static const std::array<Vector3i, 26> m_CageAir;
+ cBlockArea m_Fountain;
+
+ int m_MinX = -1, m_MaxX = 1, m_MinZ = -1, m_MaxZ = 1;
+
+ void GenFinish(cChunkDesc &a_ChunkDesc) override;
+ void PlaceTower(cChunkDesc & a_ChunkDesc, const sTowerProperties & a_TowerProperties);
+};