summaryrefslogtreecommitdiffstats
path: root/src/Simulator/IncrementalRedstoneSimulator.cpp
diff options
context:
space:
mode:
authorwiseoldman95 <wiseoldman95@users.noreply.github.com>2014-04-07 18:55:17 +0200
committerwiseoldman95 <wiseoldman95@users.noreply.github.com>2014-04-07 18:55:17 +0200
commit4f8f686292e8a55ae5b172a191c955ddd1fa9457 (patch)
treed0273d7edd5476229d37b7b0c50507fb1fcfbc3c /src/Simulator/IncrementalRedstoneSimulator.cpp
parentFixed some more minor issues with the redstone simulator. (diff)
downloadcuberite-4f8f686292e8a55ae5b172a191c955ddd1fa9457.tar
cuberite-4f8f686292e8a55ae5b172a191c955ddd1fa9457.tar.gz
cuberite-4f8f686292e8a55ae5b172a191c955ddd1fa9457.tar.bz2
cuberite-4f8f686292e8a55ae5b172a191c955ddd1fa9457.tar.lz
cuberite-4f8f686292e8a55ae5b172a191c955ddd1fa9457.tar.xz
cuberite-4f8f686292e8a55ae5b172a191c955ddd1fa9457.tar.zst
cuberite-4f8f686292e8a55ae5b172a191c955ddd1fa9457.zip
Diffstat (limited to '')
-rw-r--r--src/Simulator/IncrementalRedstoneSimulator.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/Simulator/IncrementalRedstoneSimulator.cpp b/src/Simulator/IncrementalRedstoneSimulator.cpp
index f12c29211..420d7c3f6 100644
--- a/src/Simulator/IncrementalRedstoneSimulator.cpp
+++ b/src/Simulator/IncrementalRedstoneSimulator.cpp
@@ -684,22 +684,26 @@ void cIncrementalRedstoneSimulator::HandleRedstoneWire(int a_BlockX, int a_Block
void cIncrementalRedstoneSimulator::HandleRedstoneRepeater(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_MyState)
{
// Create a variable holding my meta to avoid multiple lookups.
- NIBBLETYPE a_Meta = m_World.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
+ NIBBLETYPE a_Meta = m_World.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
- // Do the same for being on, self powered or locked.
- bool IsOn = (a_MyState == E_BLOCK_REDSTONE_REPEATER_ON);
- bool IsSelfPowered = IsRepeaterPowered(a_BlockX, a_BlockY, a_BlockZ, a_Meta);
- bool IsLocked = IsRepeaterLocked(a_BlockX, a_BlockY, a_BlockZ, a_Meta);
+
- if (IsSelfPowered && !IsOn && !IsLocked) // Queue a power change if powered, but not on and not locked.
- {
- QueueRepeaterPowerChange(a_BlockX, a_BlockY, a_BlockZ, a_Meta, true);
- }
- else if (!IsSelfPowered && IsOn && !IsLocked) // Queue a power change if unpowered, on, and not locked.
- {
- QueueRepeaterPowerChange(a_BlockX, a_BlockY, a_BlockZ, a_Meta, false);
+
+ if (IsRepeaterLocked(a_BlockX, a_BlockY, a_BlockZ, a_Meta)) // If we're locked, change nothing. Otherwise:
+ {
+ // Create a variable holding being on or self powered to avoid multiple lookups.
+ bool IsOn = (a_MyState == E_BLOCK_REDSTONE_REPEATER_ON);
+ bool IsSelfPowered = IsRepeaterPowered(a_BlockX, a_BlockY, a_BlockZ, a_Meta);
+ if (IsSelfPowered && !IsOn && !IsLocked) // Queue a power change if powered, but not on and not locked.
+ {
+ QueueRepeaterPowerChange(a_BlockX, a_BlockY, a_BlockZ, a_Meta, true);
+ }
+ else if (!IsSelfPowered && IsOn && !IsLocked) // Queue a power change if unpowered, on, and not locked.
+ {
+ QueueRepeaterPowerChange(a_BlockX, a_BlockY, a_BlockZ, a_Meta, false);
+ }
}
-
+
for (RepeatersDelayList::iterator itr = m_RepeatersDelayList->begin(); itr != m_RepeatersDelayList->end(); ++itr)
{
if (!itr->a_BlockPos.Equals(Vector3i(a_BlockX, a_BlockY, a_BlockZ)))