From 01577bed9d9840f48766a16095ab2b1fce8c02ff Mon Sep 17 00:00:00 2001 From: faketruth Date: Tue, 6 Mar 2012 21:06:51 +0000 Subject: Yay redstone repeaters! git-svn-id: http://mc-server.googlecode.com/svn/trunk@374 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cRedstone.h | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) (limited to 'source/cRedstone.h') diff --git a/source/cRedstone.h b/source/cRedstone.h index 44641fbdf..26e9a6319 100644 --- a/source/cRedstone.h +++ b/source/cRedstone.h @@ -1,5 +1,7 @@ #pragma once +#include "Vector3i.h" + class cWorld; class cRedstone { @@ -21,6 +23,91 @@ public: return 0x0; } + static bool IsRepeaterPointingTo( const Vector3i & a_RepeaterPos, char a_MetaData, const Vector3i & a_BlockPos ) + { + switch( a_MetaData ) + { + case 0x0: + if( (a_RepeaterPos - a_BlockPos).Equals( Vector3i( 0, 0, 1 ) ) ) + { + return true; + } + break; + case 0x1: + if( (a_RepeaterPos - a_BlockPos).Equals( Vector3i(-1, 0, 0 ) ) ) + { + return true; + } + break; + case 0x2: + if( (a_RepeaterPos - a_BlockPos).Equals( Vector3i( 0, 0,-1 ) ) ) + { + return true; + } + break; + case 0x3: + if( (a_RepeaterPos - a_BlockPos).Equals( Vector3i( 1, 0, 0 ) ) ) + { + return true; + } + break; + default: + break; + } + return false; + } + + static bool IsRepeaterPointingAway( const Vector3i & a_RepeaterPos, char a_MetaData, const Vector3i & a_BlockPos ) + { + switch( a_MetaData ) + { + case 0x0: + if( (a_RepeaterPos - a_BlockPos).Equals( Vector3i( 0, 0,-1 ) ) ) + { + return true; + } + break; + case 0x1: + if( (a_RepeaterPos - a_BlockPos).Equals( Vector3i( 1, 0, 0 ) ) ) + { + return true; + } + break; + case 0x2: + if( (a_RepeaterPos - a_BlockPos).Equals( Vector3i( 0, 0, 1 ) ) ) + { + return true; + } + break; + case 0x3: + if( (a_RepeaterPos - a_BlockPos).Equals( Vector3i(-1, 0, 0 ) ) ) + { + return true; + } + break; + default: + break; + } + return false; + } + + static Vector3i GetRepeaterDirection( char a_MetaData ) + { + switch( a_MetaData ) + { + case 0x0: + return Vector3i( 0, 0,-1 ); + case 0x1: + return Vector3i( 1, 0, 0 ); + case 0x2: + return Vector3i( 0, 0, 1 ); + case 0x3: + return Vector3i(-1, 0, 0 ); + default: + break; + } + return Vector3i(); + } void CalculateRedstone( int, int, int ); void ChangeRedstone( int, int, int, bool ); -- cgit v1.2.3