diff options
author | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2013-11-21 23:44:18 +0100 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2013-11-21 23:44:18 +0100 |
commit | 314884d9bbd5ec1edf0ec473a1c29b493964f955 (patch) | |
tree | 630ff13b87592467ff509a55ce694768f6c8779d /source/Simulator/RedstoneSimulator.h | |
parent | Multiple bugfixes [SEE DESC] (diff) | |
download | cuberite-314884d9bbd5ec1edf0ec473a1c29b493964f955.tar cuberite-314884d9bbd5ec1edf0ec473a1c29b493964f955.tar.gz cuberite-314884d9bbd5ec1edf0ec473a1c29b493964f955.tar.bz2 cuberite-314884d9bbd5ec1edf0ec473a1c29b493964f955.tar.lz cuberite-314884d9bbd5ec1edf0ec473a1c29b493964f955.tar.xz cuberite-314884d9bbd5ec1edf0ec473a1c29b493964f955.tar.zst cuberite-314884d9bbd5ec1edf0ec473a1c29b493964f955.zip |
Diffstat (limited to 'source/Simulator/RedstoneSimulator.h')
-rw-r--r-- | source/Simulator/RedstoneSimulator.h | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/source/Simulator/RedstoneSimulator.h b/source/Simulator/RedstoneSimulator.h index ab88f51e2..10d87505c 100644 --- a/source/Simulator/RedstoneSimulator.h +++ b/source/Simulator/RedstoneSimulator.h @@ -106,7 +106,7 @@ private: ///<summary>Marks all blocks immediately surrounding a coordinate as powered</summary> void SetAllDirsAsPowered(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_SourceBlock); - ///<summary>Returns if a coordiante is powered or linked powered</summary> + ///<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 repeater is powered</summary> bool IsRepeaterPowered(int a_BlockX, int a_BlockY, int a_BlockZ, NIBBLETYPE a_Meta); @@ -117,6 +117,29 @@ private: bool IsButtonOn(NIBBLETYPE a_BlockMeta); /* ============================== */ + /* ====== Misc Functions ====== */ + + ///<summary>Returns if a block is viable to be the MiddleBlock of a SetLinkedPowered operation</summary> + inline static bool IsViableMiddleBlock(BLOCKTYPE Block) + { + if (!g_BlockIsSolid[Block]) { return false; } + + switch (Block) + { + // Add SOLID but not viable middle blocks here + case E_BLOCK_REDSTONE_REPEATER_ON: + case E_BLOCK_REDSTONE_REPEATER_OFF: + { + return false; + } + default: + { + return true; + } + } + } + + ///<summary>Returns if a block is a mechanism (something that accepts power and does something)</summary> inline static bool IsMechanism(BLOCKTYPE Block) { switch (Block) @@ -145,6 +168,7 @@ private: } } + ///<summary>Returns if a block has the potential to output power</summary> inline static bool IsPotentialSource(BLOCKTYPE Block) { switch (Block) @@ -167,6 +191,7 @@ private: } } + ///<summary>Returns if a block is any sort of redstone device</summary> inline static bool IsRedstone(BLOCKTYPE Block) { switch (Block) |