From 6df50b40ee16d4c40ffc0067695b58d27e1afac8 Mon Sep 17 00:00:00 2001 From: "admin@omencraft.com" Date: Sun, 6 Nov 2011 02:36:05 +0000 Subject: Finished most of piston class. Pistons should work when a redstone current with wire is lit up or extinguished near them but don't yet. There'sa bug to kill. git-svn-id: http://mc-server.googlecode.com/svn/trunk@66 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cRedstone.cpp | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) (limited to 'source/cRedstone.cpp') diff --git a/source/cRedstone.cpp b/source/cRedstone.cpp index 1d865373b..111c012e2 100644 --- a/source/cRedstone.cpp +++ b/source/cRedstone.cpp @@ -1,4 +1,5 @@ #include "cRedstone.h" +#include "cPiston.h" #include "cRoot.h" #include "cWorld.h" #include "BlockID.h" @@ -62,23 +63,32 @@ void cRedstone::ChangeRedstoneTorch( int fillx, int filly, int fillz, bool added void cRedstone::LightRedstone( int fillx, int filly, int fillz, char metadata) { - //cWorld* World = cRoot::Get()->GetWorld(); - if ( ( (int)m_World->GetBlock( fillx, filly, fillz ) == E_BLOCK_REDSTONE_WIRE) && ( (int)m_World->GetBlockMeta( fillx, filly, fillz) != metadata ) ) { - m_World->FastSetBlock( fillx, filly, fillz, (char)E_BLOCK_REDSTONE_WIRE, metadata ); - LightRedstone(fillx-1,filly,fillz,metadata); - LightRedstone(fillx+1,filly,fillz,metadata); - LightRedstone(fillx,filly,fillz-1,metadata); - LightRedstone(fillx,filly,fillz+1,metadata); + if ( ( (int)m_World->GetBlock( fillx, filly, fillz ) == E_BLOCK_STICKY_PISTON ) || ( (int)m_World->GetBlock( fillx, filly, fillz ) == E_BLOCK_PISTON ) ) { + printf("rsPiston 1\n"); + cPiston Piston(m_World); + if (metadata > 0) { + printf("rsPiston 2\n"); + Piston.ExtendPiston(fillx, filly, fillz); + } else { + printf("rsPiston 3\n"); + Piston.RetractPiston(fillx, filly, fillz); + } + } else if ( ( (int)m_World->GetBlock( fillx, filly, fillz ) == E_BLOCK_REDSTONE_WIRE) && ( (int)m_World->GetBlockMeta( fillx, filly, fillz) != metadata ) ) { + m_World->FastSetBlock( fillx, filly, fillz, (char)E_BLOCK_REDSTONE_WIRE, metadata ); + LightRedstone(fillx-1,filly,fillz,metadata); + LightRedstone(fillx+1,filly,fillz,metadata); + LightRedstone(fillx,filly,fillz-1,metadata); + LightRedstone(fillx,filly,fillz+1,metadata); - LightRedstone(fillx-1,filly-1,fillz,metadata); - LightRedstone(fillx+1,filly-1,fillz,metadata); - LightRedstone(fillx,filly-1,fillz-1,metadata); - LightRedstone(fillx,filly-1,fillz+1,metadata); + LightRedstone(fillx-1,filly-1,fillz,metadata); + LightRedstone(fillx+1,filly-1,fillz,metadata); + LightRedstone(fillx,filly-1,fillz-1,metadata); + LightRedstone(fillx,filly-1,fillz+1,metadata); - LightRedstone(fillx-1,filly+1,fillz,metadata); - LightRedstone(fillx+1,filly+1,fillz,metadata); - LightRedstone(fillx,filly+1,fillz-1,metadata); - LightRedstone(fillx,filly+1,fillz+1,metadata); - } + LightRedstone(fillx-1,filly+1,fillz,metadata); + LightRedstone(fillx+1,filly+1,fillz,metadata); + LightRedstone(fillx,filly+1,fillz-1,metadata); + LightRedstone(fillx,filly+1,fillz+1,metadata); + } } -- cgit v1.2.3