summaryrefslogtreecommitdiffstats
path: root/source/Simulator/FloodyFluidSimulator.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/Simulator/FloodyFluidSimulator.h')
-rw-r--r--source/Simulator/FloodyFluidSimulator.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/source/Simulator/FloodyFluidSimulator.h b/source/Simulator/FloodyFluidSimulator.h
new file mode 100644
index 000000000..d3fa85fce
--- /dev/null
+++ b/source/Simulator/FloodyFluidSimulator.h
@@ -0,0 +1,49 @@
+
+// FloodyFluidSimulator.h
+
+// Interfaces to the cFloodyFluidSimulator that represents a fluid simulator that tries to flood everything :)
+// http://forum.mc-server.org/showthread.php?tid=565
+
+
+
+
+
+#pragma once
+
+#include "DelayedFluidSimulator.h"
+
+
+
+
+
+// fwd:
+class cBlockArea;
+
+
+
+
+
+class cFloodyFluidSimulator :
+ public cDelayedFluidSimulator
+{
+ typedef cDelayedFluidSimulator super;
+
+public:
+ cFloodyFluidSimulator(cWorld * a_World, BLOCKTYPE a_Fluid, BLOCKTYPE a_StationaryFluid, NIBBLETYPE a_Falloff, int a_TickDelay);
+
+protected:
+ NIBBLETYPE m_Falloff;
+
+ // cDelayedFluidSimulator overrides:
+ virtual void SimulateBlock(int a_BlockX, int a_BlockY, int a_BlockZ) override;
+
+ /// Checks tributaries, if not fed, decreases the block's level and returns true
+ bool CheckTributaries(int a_BlockX, int a_BlockY, int a_BlockZ, const cBlockArea & a_Area, NIBBLETYPE a_MyMeta);
+
+ /// Spreads into the specified block, if the block there allows. a_Area is for checking.
+ void SpreadToNeighbor(int a_BlockX, int a_BlockY, int a_BlockZ, const cBlockArea & a_Area, NIBBLETYPE a_NewMeta);
+} ;
+
+
+
+