diff options
Diffstat (limited to 'src/Simulator/IncrementalRedstoneSimulator/DropSpenserHandler.h')
-rw-r--r-- | src/Simulator/IncrementalRedstoneSimulator/DropSpenserHandler.h | 126 |
1 files changed, 76 insertions, 50 deletions
diff --git a/src/Simulator/IncrementalRedstoneSimulator/DropSpenserHandler.h b/src/Simulator/IncrementalRedstoneSimulator/DropSpenserHandler.h index 5f92c3868..ba2589fac 100644 --- a/src/Simulator/IncrementalRedstoneSimulator/DropSpenserHandler.h +++ b/src/Simulator/IncrementalRedstoneSimulator/DropSpenserHandler.h @@ -9,69 +9,95 @@ namespace DropSpenserHandler { - static bool IsActivated(NIBBLETYPE a_Meta) - { - return (a_Meta & E_META_DROPSPENSER_ACTIVATED) != 0; - } +static bool IsActivated(NIBBLETYPE a_Meta) +{ + return (a_Meta & E_META_DROPSPENSER_ACTIVATED) != 0; +} - static NIBBLETYPE SetActivationState(NIBBLETYPE a_Meta, bool IsOn) +static NIBBLETYPE SetActivationState(NIBBLETYPE a_Meta, bool IsOn) +{ + if (IsOn) { - if (IsOn) - { - return a_Meta | E_META_DROPSPENSER_ACTIVATED; // set the bit - } - else - { - return a_Meta & ~E_META_DROPSPENSER_ACTIVATED; // clear the bit - } + return a_Meta | E_META_DROPSPENSER_ACTIVATED; // set the bit } - - static PowerLevel GetPowerDeliveredToPosition(const cChunk & a_Chunk, Vector3i a_Position, BLOCKTYPE a_BlockType, Vector3i a_QueryPosition, BLOCKTYPE a_QueryBlockType, bool IsLinked) + else { - UNUSED(a_Chunk); - UNUSED(a_Position); - UNUSED(a_BlockType); - UNUSED(a_QueryPosition); - UNUSED(a_QueryBlockType); - UNUSED(IsLinked); - return 0; + return a_Meta & ~E_META_DROPSPENSER_ACTIVATED; // clear the bit } +} + +static PowerLevel GetPowerDeliveredToPosition( + const cChunk & a_Chunk, + Vector3i a_Position, + BLOCKTYPE a_BlockType, + Vector3i a_QueryPosition, + BLOCKTYPE a_QueryBlockType, + bool IsLinked +) +{ + UNUSED(a_Chunk); + UNUSED(a_Position); + UNUSED(a_BlockType); + UNUSED(a_QueryPosition); + UNUSED(a_QueryBlockType); + UNUSED(IsLinked); + return 0; +} + +static void Update( + cChunk & a_Chunk, + cChunk &, + Vector3i a_Position, + BLOCKTYPE a_BlockType, + NIBBLETYPE a_Meta, + const PowerLevel Power +) +{ + // LOGD("Evaluating spencer the dropspenser (%d %d %d)", a_Position.x, a_Position.y, a_Position.z); - static void Update(cChunk & a_Chunk, cChunk &, Vector3i a_Position, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta, const PowerLevel Power) - { - // LOGD("Evaluating spencer the dropspenser (%d %d %d)", a_Position.x, a_Position.y, a_Position.z); - - const bool IsPoweredNow = (Power > 0); - const bool WasPoweredPreviously = IsActivated(a_Meta); + const bool IsPoweredNow = (Power > 0); + const bool WasPoweredPreviously = IsActivated(a_Meta); - if (IsPoweredNow && !WasPoweredPreviously) - { - a_Chunk.DoWithBlockEntityAt(a_Position, [](cBlockEntity & a_BlockEntity) + if (IsPoweredNow && !WasPoweredPreviously) + { + a_Chunk.DoWithBlockEntityAt( + a_Position, + [](cBlockEntity & a_BlockEntity) { - ASSERT((a_BlockEntity.GetBlockType() == E_BLOCK_DISPENSER) || (a_BlockEntity.GetBlockType() == E_BLOCK_DROPPER)); + ASSERT( + (a_BlockEntity.GetBlockType() == E_BLOCK_DISPENSER) || + (a_BlockEntity.GetBlockType() == E_BLOCK_DROPPER) + ); static_cast<cDropSpenserEntity &>(a_BlockEntity).Activate(); return false; - }); - } - - // Update the internal dropspenser state if necessary - if (IsPoweredNow != WasPoweredPreviously) - { - a_Chunk.SetMeta(a_Position, SetActivationState(a_Meta, IsPoweredNow)); - } + } + ); } - static void ForValidSourcePositions(const cChunk & a_Chunk, Vector3i a_Position, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta, ForEachSourceCallback & Callback) + // Update the internal dropspenser state if necessary + if (IsPoweredNow != WasPoweredPreviously) { - UNUSED(a_Chunk); - UNUSED(a_BlockType); - UNUSED(a_Meta); + a_Chunk.SetMeta(a_Position, SetActivationState(a_Meta, IsPoweredNow)); + } +} + +static void ForValidSourcePositions( + const cChunk & a_Chunk, + Vector3i a_Position, + BLOCKTYPE a_BlockType, + NIBBLETYPE a_Meta, + ForEachSourceCallback & Callback +) +{ + UNUSED(a_Chunk); + UNUSED(a_BlockType); + UNUSED(a_Meta); - // Consider indirect power: - Callback.CheckIndirectPower(); + // Consider indirect power: + Callback.CheckIndirectPower(); - // Consider normal adjacents: - InvokeForAdjustedRelatives(Callback, a_Position, RelativeAdjacents); - } -}; + // Consider normal adjacents: + InvokeForAdjustedRelatives(Callback, a_Position, RelativeAdjacents); +} +}; // namespace DropSpenserHandler |