diff options
author | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2013-03-14 20:44:27 +0100 |
---|---|---|
committer | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2013-03-14 20:44:27 +0100 |
commit | b18f657ac182155499398c6e7cb4c64af8f86f2e (patch) | |
tree | 82ae758f03560334739db062d4576f52c852305f /source | |
parent | Added water and lava springs. (diff) | |
download | cuberite-b18f657ac182155499398c6e7cb4c64af8f86f2e.tar cuberite-b18f657ac182155499398c6e7cb4c64af8f86f2e.tar.gz cuberite-b18f657ac182155499398c6e7cb4c64af8f86f2e.tar.bz2 cuberite-b18f657ac182155499398c6e7cb4c64af8f86f2e.tar.lz cuberite-b18f657ac182155499398c6e7cb4c64af8f86f2e.tar.xz cuberite-b18f657ac182155499398c6e7cb4c64af8f86f2e.tar.zst cuberite-b18f657ac182155499398c6e7cb4c64af8f86f2e.zip |
Diffstat (limited to 'source')
-rw-r--r-- | source/Simulator/VaporizeFluidSimulator.cpp | 52 | ||||
-rw-r--r-- | source/Simulator/VaporizeFluidSimulator.h | 34 | ||||
-rw-r--r-- | source/World.cpp | 8 |
3 files changed, 94 insertions, 0 deletions
diff --git a/source/Simulator/VaporizeFluidSimulator.cpp b/source/Simulator/VaporizeFluidSimulator.cpp new file mode 100644 index 000000000..10466c454 --- /dev/null +++ b/source/Simulator/VaporizeFluidSimulator.cpp @@ -0,0 +1,52 @@ +
+// VaporizeFluidSimulator.cpp
+
+// Implements the cVaporizeFluidSimulator class representing a fluid simulator that replaces all fluid blocks with air
+
+#include "Globals.h"
+#include "VaporizeFluidSimulator.h"
+#include "../Chunk.h"
+
+
+
+
+
+cVaporizeFluidSimulator::cVaporizeFluidSimulator(cWorld & a_World, BLOCKTYPE a_Fluid, BLOCKTYPE a_StationaryFluid) :
+ super(a_World, a_Fluid, a_StationaryFluid)
+{
+}
+
+
+
+
+
+void cVaporizeFluidSimulator::AddBlock(int a_BlockX, int a_BlockY, int a_BlockZ, cChunk * a_Chunk)
+{
+ if (a_Chunk == NULL)
+ {
+ return;
+ }
+ int RelX = a_BlockX - a_Chunk->GetPosX() * cChunkDef::Width;
+ int RelZ = a_BlockZ - a_Chunk->GetPosZ() * cChunkDef::Width;
+ BLOCKTYPE BlockType = a_Chunk->GetBlock(RelX, a_BlockY, RelZ);
+ if (
+ (BlockType == m_FluidBlock) ||
+ (BlockType == m_StationaryFluidBlock)
+ )
+ {
+ a_Chunk->SetBlock(RelX, a_BlockY, RelZ, E_BLOCK_AIR, 0);
+ }
+}
+
+
+
+
+
+void cVaporizeFluidSimulator::Simulate(float a_Dt)
+{
+ // Nothing needed
+}
+
+
+
+
diff --git a/source/Simulator/VaporizeFluidSimulator.h b/source/Simulator/VaporizeFluidSimulator.h new file mode 100644 index 000000000..c179c8ec4 --- /dev/null +++ b/source/Simulator/VaporizeFluidSimulator.h @@ -0,0 +1,34 @@ +
+// VaporizeFluidSimulator.h
+
+// Declares the cVaporizeFluidSimulator class representing a fluid simulator that replaces all fluid blocks with air
+// Useful for water simulation in the Nether
+
+
+
+
+
+#pragma once
+
+#include "FluidSimulator.h"
+
+
+
+
+
+class cVaporizeFluidSimulator :
+ public cFluidSimulator
+{
+ typedef cFluidSimulator super;
+
+public:
+ cVaporizeFluidSimulator(cWorld & a_World, BLOCKTYPE a_Fluid, BLOCKTYPE a_StationaryFluid);
+
+ // cSimulator overrides:
+ virtual void AddBlock(int a_BlockX, int a_BlockY, int a_BlockZ, cChunk * a_Chunk) override;
+ virtual void Simulate(float a_Dt) override;
+} ;
+
+
+
+
diff --git a/source/World.cpp b/source/World.cpp index 70b70d1f1..a82b4078b 100644 --- a/source/World.cpp +++ b/source/World.cpp @@ -21,6 +21,7 @@ #include "Simulator/FireSimulator.h" #include "Simulator/SandSimulator.h" #include "Simulator/RedstoneSimulator.h" +#include "Simulator/VaporizeFluidSimulator.h" // Mobs: #include "Mobs/Bat.h" @@ -2244,6 +2245,13 @@ cFluidSimulator * cWorld::InitializeFluidSimulator(cIniFile & a_IniFile, const c int NumNeighborsForSource = a_IniFile.GetValueSetI(SimulatorSectionName, "NumNeighborsForSource", IsWater ? 2 : -1); res = new cFloodyFluidSimulator(*this, a_SimulateBlock, a_StationaryBlock, Falloff, TickDelay, NumNeighborsForSource); } + else if ( + (NoCaseCompare(SimulatorName, "vaporize") == 0) || + (NoCaseCompare(SimulatorName, "vaporise") == 0) + ) + { + res = new cVaporizeFluidSimulator(*this, a_SimulateBlock, a_StationaryBlock); + } else { if (NoCaseCompare(SimulatorName, "classic") != 0) |