diff options
author | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2013-12-07 15:41:58 +0100 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2013-12-07 15:41:58 +0100 |
commit | 1932cc38a1fba31a61be2f1a5d17ced46d5915ad (patch) | |
tree | c2ed72646d3e916834a3f403a3f7a1fac82521a6 /src/Simulator/RedstoneSimulator.h | |
parent | Added basic ender chests (diff) | |
download | cuberite-1932cc38a1fba31a61be2f1a5d17ced46d5915ad.tar cuberite-1932cc38a1fba31a61be2f1a5d17ced46d5915ad.tar.gz cuberite-1932cc38a1fba31a61be2f1a5d17ced46d5915ad.tar.bz2 cuberite-1932cc38a1fba31a61be2f1a5d17ced46d5915ad.tar.lz cuberite-1932cc38a1fba31a61be2f1a5d17ced46d5915ad.tar.xz cuberite-1932cc38a1fba31a61be2f1a5d17ced46d5915ad.tar.zst cuberite-1932cc38a1fba31a61be2f1a5d17ced46d5915ad.zip |
Diffstat (limited to 'src/Simulator/RedstoneSimulator.h')
-rw-r--r-- | src/Simulator/RedstoneSimulator.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Simulator/RedstoneSimulator.h b/src/Simulator/RedstoneSimulator.h index 59400b614..e094150e8 100644 --- a/src/Simulator/RedstoneSimulator.h +++ b/src/Simulator/RedstoneSimulator.h @@ -50,12 +50,20 @@ private: BLOCKTYPE a_SourceBlock; BLOCKTYPE a_MiddleBlock; }; + + struct sSimulatedPlayerToggleableList + { + Vector3i a_BlockPos; + bool WasLastStatePowered; + }; typedef std::vector <sPoweredBlocks> PoweredBlocksList; typedef std::vector <sLinkedPoweredBlocks> LinkedBlocksList; + typedef std::vector <sSimulatedPlayerToggleableList> SimulatedPlayerToggleableList; PoweredBlocksList m_PoweredBlocks; LinkedBlocksList m_LinkedPoweredBlocks; + SimulatedPlayerToggleableList m_SimulatedPlayerToggleableBlocks; virtual void AddBlock(int a_BlockX, int a_BlockY, int a_BlockZ, cChunk * a_Chunk) override; @@ -102,6 +110,8 @@ private: void SetBlockPowered(int a_BlockX, int a_BlockY, int a_BlockZ, int a_SourceX, int a_SourceY, int a_SourceZ, BLOCKTYPE a_SourceBlock); /// <summary>Marks a block as being powered through another block</summary> void SetBlockLinkedPowered(int a_BlockX, int a_BlockY, int a_BlockZ, int a_MiddleX, int a_MiddleY, int a_MiddleZ, int a_SourceX, int a_SourceY, int a_SourceZ, BLOCKTYPE a_SourceBlock, BLOCKTYPE a_MiddeBlock); + /// <summary>Marks a block as simulated, who should not be simulated further unless their power state changes, to accomodate a player manually toggling the block without triggering the simulator toggling it back</summary> + void SetPlayerToggleableBlockAsSimulated(int a_BlockX, int a_BlockY, int a_BlockZ, bool WasLastStatePowered); /// <summary>Marks the second block in a direction as linked powered</summary> void SetDirectionLinkedPowered(int a_BlockX, int a_BlockY, int a_BlockZ, char a_Direction, BLOCKTYPE a_SourceBlock); /// <summary>Marks all blocks immediately surrounding a coordinate as powered</summary> @@ -109,6 +119,8 @@ private: /// <summary>Returns if a coordinate is powered or linked powered</summary> bool AreCoordsPowered(int a_BlockX, int a_BlockY, int a_BlockZ); + /// <summary>Returns if a coordinate was marked as simulated (for blocks toggleable by players)</summary> + bool AreCoordsSimulated(int a_BlockX, int a_BlockY, int a_BlockZ, bool IsCurrentStatePowered); /// <summary>Returns if a repeater is powered</summary> bool IsRepeaterPowered(int a_BlockX, int a_BlockY, int a_BlockZ, NIBBLETYPE a_Meta); /// <summary>Returns if a piston is powered</summary> |