From 6a051b7cd88d3c547e1c257972d7299b0df9c32a Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Fri, 22 Nov 2013 23:15:59 +0000 Subject: Properly fixed piston bugs --- source/Piston.cpp | 4 +++- source/Simulator/RedstoneSimulator.cpp | 13 +++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/source/Piston.cpp b/source/Piston.cpp index 25702e2b6..63ffbad0b 100644 --- a/source/Piston.cpp +++ b/source/Piston.cpp @@ -15,7 +15,7 @@ /// Number of ticks that the piston extending / retracting waits before setting the block -const int PISTON_TICK_DELAY = 5; +const int PISTON_TICK_DELAY = 6; @@ -140,9 +140,11 @@ void cPiston::RetractPiston(int pistx, int pisty, int pistz) return; } + AddDir(pistx, pisty, pistz, pistonMeta, -1); m_World->BroadcastBlockAction(pistx, pisty, pistz, 1, pistonMeta & ~(8), pistonBlock); m_World->BroadcastSoundEffect("tile.piston.in", pistx * 8, pisty * 8, pistz * 8, 0.5f, 0.7f); m_World->SetBlock(pistx, pisty, pistz, pistonBlock, pistonMeta & ~(8)); + AddDir(pistx, pisty, pistz, pistonMeta, 1); // Retract the extension, pull block if appropriate if (IsSticky(pistonBlock)) diff --git a/source/Simulator/RedstoneSimulator.cpp b/source/Simulator/RedstoneSimulator.cpp index 15d954313..76a4dafb0 100644 --- a/source/Simulator/RedstoneSimulator.cpp +++ b/source/Simulator/RedstoneSimulator.cpp @@ -431,8 +431,6 @@ void cRedstoneSimulator::HandleRedstoneWire(int a_BlockX, int a_BlockY, int a_Bl if (m_World.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) != 0) // A powered wire { - //SetBlockPowered(a_BlockX, a_BlockY - 1, a_BlockZ, a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_REDSTONE_WIRE); // No matter what, block underneath gets powered - switch (GetWireDirection(a_BlockX, a_BlockY, a_BlockZ)) { case REDSTONE_NONE: @@ -496,7 +494,10 @@ void cRedstoneSimulator::HandleRedstoneRepeater(int a_BlockX, int a_BlockY, int { // We do this so that the repeater can continually update block power status (without being affected by it's own block type, which would happen if the block powering code was in an IF statement) bool IsOn = false; - if (a_MyState == E_BLOCK_REDSTONE_REPEATER_ON) { IsOn = true; } + if (a_MyState == E_BLOCK_REDSTONE_REPEATER_ON) + { + IsOn = true; + } NIBBLETYPE a_Meta = m_World.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ); @@ -533,7 +534,10 @@ void cRedstoneSimulator::HandleRedstoneRepeater(int a_BlockX, int a_BlockY, int } else { - if (IsOn) { m_World.FastSetBlock(a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_REDSTONE_REPEATER_OFF, a_Meta); } + if (IsOn) + { + m_World.FastSetBlock(a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_REDSTONE_REPEATER_OFF, a_Meta); + } } return; } @@ -1060,6 +1064,7 @@ void cRedstoneSimulator::SetAllDirsAsPowered(int a_BlockX, int a_BlockY, int a_B { 0, 0, 1 }, { 0, 0,-1 }, { 0, 1, 0 }, + { 0,-1, 0 } }; for (int i = 0; i < ARRAYCOUNT(gCrossCoords); i++) -- cgit v1.2.3