Levers (patch contributed by Keyboard)
http://forum.mc-server.org/showthread.php?tid=649 git-svn-id: http://mc-server.googlecode.com/svn/trunk@1075 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
9a839a3a98
commit
b1777fa867
@ -1854,6 +1854,14 @@
|
|||||||
RelativePath="..\source\blocks\BlockLeaves.h"
|
RelativePath="..\source\blocks\BlockLeaves.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\source\Blocks\BlockLever.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\source\Blocks\BlockLever.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\source\blocks\BlockMelon.h"
|
RelativePath="..\source\blocks\BlockMelon.h"
|
||||||
>
|
>
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "BlockDispenser.h"
|
#include "BlockDispenser.h"
|
||||||
#include "BlockStairs.h"
|
#include "BlockStairs.h"
|
||||||
#include "BlockLadder.h"
|
#include "BlockLadder.h"
|
||||||
|
#include "BlockLever.h"
|
||||||
#include "BlockSign.h"
|
#include "BlockSign.h"
|
||||||
#include "BlockCrops.h"
|
#include "BlockCrops.h"
|
||||||
#include "BlockSugarcane.h"
|
#include "BlockSugarcane.h"
|
||||||
@ -116,6 +117,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
|
|||||||
case E_BLOCK_JUKEBOX: return new cBlockEntityHandler (a_BlockType);
|
case E_BLOCK_JUKEBOX: return new cBlockEntityHandler (a_BlockType);
|
||||||
case E_BLOCK_JUNGLE_WOOD_STAIRS: return new cBlockStairsHandler (a_BlockType);
|
case E_BLOCK_JUNGLE_WOOD_STAIRS: return new cBlockStairsHandler (a_BlockType);
|
||||||
case E_BLOCK_LADDER: return new cBlockLadderHandler (a_BlockType);
|
case E_BLOCK_LADDER: return new cBlockLadderHandler (a_BlockType);
|
||||||
|
case E_BLOCK_LEVER: return new cBlockLeverHandler (a_BlockType);
|
||||||
case E_BLOCK_LAPIS_ORE: return new cBlockOreHandler (a_BlockType);
|
case E_BLOCK_LAPIS_ORE: return new cBlockOreHandler (a_BlockType);
|
||||||
case E_BLOCK_LAVA: return new cBlockFluidHandler (a_BlockType);
|
case E_BLOCK_LAVA: return new cBlockFluidHandler (a_BlockType);
|
||||||
case E_BLOCK_LEAVES: return new cBlockLeavesHandler (a_BlockType);
|
case E_BLOCK_LEAVES: return new cBlockLeavesHandler (a_BlockType);
|
||||||
|
67
source/Blocks/BlockLever.cpp
Normal file
67
source/Blocks/BlockLever.cpp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
|
||||||
|
#include "Globals.h"
|
||||||
|
#include "BlockLever.h"
|
||||||
|
#include "../Item.h"
|
||||||
|
#include "../World.h"
|
||||||
|
#include "../Player.h"
|
||||||
|
#include "../Simulator/RedstoneSimulator.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cBlockLeverHandler::cBlockLeverHandler(BLOCKTYPE a_BlockType)
|
||||||
|
: cBlockHandler(a_BlockType)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cBlockLeverHandler::OnPlaced(cWorld *a_World, int a_BlockX, int a_BlockY, int a_BlockZ, int a_Dir)
|
||||||
|
{
|
||||||
|
// Noting needed yet
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cBlockLeverHandler::OnDestroyed(cWorld *a_World, int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||||
|
{
|
||||||
|
// Nothing needed yet
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cBlockLeverHandler::OnUse(cWorld *a_World, cPlayer *a_Player, int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||||
|
{
|
||||||
|
//Flip the ON bit on/off. Using XOR bitwise operation to turn it on/off.
|
||||||
|
a_World->SetBlock(a_BlockX, a_BlockY, a_BlockZ, m_BlockType, ((a_World->GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) ^ 0x08) & 0x0f));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cBlockLeverHandler::OnDigging(cWorld *a_World, cPlayer *a_Player, int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||||
|
{
|
||||||
|
OnUse(a_World, a_Player, a_BlockX, a_BlockY, a_BlockZ);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cBlockLeverHandler::PlaceBlock(cWorld *a_World, cPlayer *a_Player, NIBBLETYPE a_BlockMeta, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir)
|
||||||
|
{
|
||||||
|
a_World->SetBlock(a_BlockX, a_BlockY, a_BlockZ, m_BlockType, cRedstoneSimulator::LeverDirectionToMetaData(a_Dir));
|
||||||
|
OnPlacedByPlayer(a_World, a_Player, a_BlockX, a_BlockY, a_BlockZ, a_Dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
45
source/Blocks/BlockLever.h
Normal file
45
source/Blocks/BlockLever.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "BlockHandler.h"
|
||||||
|
#include "../World.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class cBlockLeverHandler :
|
||||||
|
public cBlockHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
cBlockLeverHandler(BLOCKTYPE a_BlockType);
|
||||||
|
virtual void OnPlaced(cWorld * a_World, int a_BlockX, int a_BlockY, int a_BlockZ, int a_Dir) override;
|
||||||
|
virtual void OnDestroyed(cWorld * a_World, int a_BlockX, int a_BlockY, int a_BlockZ) override;
|
||||||
|
|
||||||
|
virtual void OnDigging(cWorld * a_World, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ) override;
|
||||||
|
virtual void OnUse(cWorld * a_World, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ) override;
|
||||||
|
|
||||||
|
|
||||||
|
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
|
||||||
|
{
|
||||||
|
// Reset meta to 0
|
||||||
|
a_Pickups.push_back(cItem(E_ITEM_LEVER, 1, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
virtual bool IsUseable(void) override
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
virtual void PlaceBlock(cWorld * a_World, cPlayer * a_Player, NIBBLETYPE a_BlockMeta, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override;
|
||||||
|
|
||||||
|
|
||||||
|
virtual bool DoesAllowBlockOnTop(void) override
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual const char * GetStepSound(void) override
|
||||||
|
{
|
||||||
|
return "step.wood";
|
||||||
|
}
|
||||||
|
} ;
|
@ -225,7 +225,7 @@ void cRedstoneSimulator::HandleChange( const Vector3i & a_BlockPos )
|
|||||||
|
|
||||||
BlockList Sources;
|
BlockList Sources;
|
||||||
// If torch is still on, use it as a source
|
// If torch is still on, use it as a source
|
||||||
if( Block == E_BLOCK_REDSTONE_TORCH_ON )
|
if( Block == E_BLOCK_REDSTONE_TORCH_ON)
|
||||||
{
|
{
|
||||||
Sources.push_back( a_BlockPos );
|
Sources.push_back( a_BlockPos );
|
||||||
}
|
}
|
||||||
@ -245,6 +245,12 @@ void cRedstoneSimulator::HandleChange( const Vector3i & a_BlockPos )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ( Block == E_BLOCK_LEVER )
|
||||||
|
{
|
||||||
|
//Adding lever to the source queue
|
||||||
|
if (cRedstoneSimulator::IsLeverOn(m_World,a_BlockPos))
|
||||||
|
Sources.push_back( a_BlockPos );
|
||||||
|
}
|
||||||
|
|
||||||
// Power all blocks legally connected to the sources
|
// Power all blocks legally connected to the sources
|
||||||
if( Block != E_BLOCK_REDSTONE_REPEATER_ON )
|
if( Block != E_BLOCK_REDSTONE_REPEATER_ON )
|
||||||
@ -259,6 +265,7 @@ void cRedstoneSimulator::HandleChange( const Vector3i & a_BlockPos )
|
|||||||
char Block = m_World->GetBlock( SourcePos );
|
char Block = m_World->GetBlock( SourcePos );
|
||||||
switch( Block )
|
switch( Block )
|
||||||
{
|
{
|
||||||
|
case E_BLOCK_LEVER: //Treating lever as a torch
|
||||||
case E_BLOCK_REDSTONE_TORCH_OFF:
|
case E_BLOCK_REDSTONE_TORCH_OFF:
|
||||||
case E_BLOCK_REDSTONE_TORCH_ON:
|
case E_BLOCK_REDSTONE_TORCH_ON:
|
||||||
{
|
{
|
||||||
@ -384,7 +391,12 @@ bool cRedstoneSimulator::PowerBlock( const Vector3i & a_BlockPos, const Vector3i
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
if( Block != E_BLOCK_AIR && Block != E_BLOCK_REDSTONE_TORCH_ON && Block != E_BLOCK_REDSTONE_TORCH_OFF )
|
if (
|
||||||
|
(Block != E_BLOCK_AIR) &&
|
||||||
|
(Block != E_BLOCK_REDSTONE_TORCH_ON) &&
|
||||||
|
(Block != E_BLOCK_REDSTONE_TORCH_OFF) &&
|
||||||
|
(Block != E_BLOCK_LEVER) //Treating lever as a torch, for refreshing
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if( IsPowered( a_BlockPos, true ) )
|
if( IsPowered( a_BlockPos, true ) )
|
||||||
{
|
{
|
||||||
@ -423,12 +435,21 @@ int cRedstoneSimulator::UnPowerBlock( const Vector3i & a_BlockPos, const Vector3
|
|||||||
m_RefreshPistons.push_back( a_BlockPos );
|
m_RefreshPistons.push_back( a_BlockPos );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case E_BLOCK_REDSTONE_TORCH_ON:
|
case E_BLOCK_REDSTONE_TORCH_ON:
|
||||||
{
|
{
|
||||||
return 2;
|
return 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case E_BLOCK_LEVER:
|
||||||
|
{
|
||||||
|
//Check if lever is ON. If it is, report it back as a source
|
||||||
|
if (cRedstoneSimulator::IsLeverOn(m_World,a_BlockPos))
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case E_BLOCK_REDSTONE_REPEATER_ON:
|
case E_BLOCK_REDSTONE_REPEATER_ON:
|
||||||
{
|
{
|
||||||
@ -457,7 +478,7 @@ int cRedstoneSimulator::UnPowerBlock( const Vector3i & a_BlockPos, const Vector3
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
if ((BlockType != E_BLOCK_AIR) && (BlockType != E_BLOCK_REDSTONE_TORCH_ON) && (BlockType != E_BLOCK_REDSTONE_TORCH_OFF))
|
if ((BlockType != E_BLOCK_AIR) && (BlockType != E_BLOCK_REDSTONE_TORCH_ON) && (BlockType != E_BLOCK_REDSTONE_TORCH_OFF) && (BlockType != E_BLOCK_LEVER)) //Treating lever as a torch
|
||||||
{
|
{
|
||||||
if (!IsPowered(a_BlockPos, true))
|
if (!IsPowered(a_BlockPos, true))
|
||||||
{
|
{
|
||||||
@ -501,7 +522,10 @@ cRedstoneSimulator::BlockList cRedstoneSimulator::RemoveCurrent( const Vector3i
|
|||||||
};
|
};
|
||||||
|
|
||||||
char Block = m_World->GetBlock( a_BlockPos );
|
char Block = m_World->GetBlock( a_BlockPos );
|
||||||
if( Block == E_BLOCK_REDSTONE_REPEATER_ON || Block == E_BLOCK_REDSTONE_REPEATER_OFF )
|
if (
|
||||||
|
(Block == E_BLOCK_REDSTONE_REPEATER_ON) ||
|
||||||
|
(Block == E_BLOCK_REDSTONE_REPEATER_OFF)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
static Vector3i Surroundings [] = { // Repeaters only spread right in front and 1 block up
|
static Vector3i Surroundings [] = { // Repeaters only spread right in front and 1 block up
|
||||||
Vector3i( 0, 0, 0),
|
Vector3i( 0, 0, 0),
|
||||||
@ -522,7 +546,11 @@ cRedstoneSimulator::BlockList cRedstoneSimulator::RemoveCurrent( const Vector3i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( Block == E_BLOCK_REDSTONE_TORCH_OFF || Block == E_BLOCK_REDSTONE_TORCH_ON )
|
else if (
|
||||||
|
(Block == E_BLOCK_REDSTONE_TORCH_OFF) ||
|
||||||
|
(Block == E_BLOCK_REDSTONE_TORCH_ON) ||
|
||||||
|
(Block == E_BLOCK_LEVER) // Treating lever as a torch
|
||||||
|
)
|
||||||
{
|
{
|
||||||
static Vector3i Surroundings [] = { // Torches only spread on the same level
|
static Vector3i Surroundings [] = { // Torches only spread on the same level
|
||||||
Vector3i(-1, 0, 0),
|
Vector3i(-1, 0, 0),
|
||||||
@ -581,7 +609,15 @@ cRedstoneSimulator::BlockList cRedstoneSimulator::RemoveCurrent( const Vector3i
|
|||||||
bool cRedstoneSimulator::IsPowering( const Vector3i & a_PowerPos, const Vector3i & a_BlockPos, eRedstoneDirection a_WireDirection, bool a_bOnlyByWire )
|
bool cRedstoneSimulator::IsPowering( const Vector3i & a_PowerPos, const Vector3i & a_BlockPos, eRedstoneDirection a_WireDirection, bool a_bOnlyByWire )
|
||||||
{
|
{
|
||||||
BLOCKTYPE PowerBlock = m_World->GetBlock( a_PowerPos );
|
BLOCKTYPE PowerBlock = m_World->GetBlock( a_PowerPos );
|
||||||
if (!a_bOnlyByWire && (PowerBlock == E_BLOCK_REDSTONE_TORCH_ON)) return true;
|
if (
|
||||||
|
!a_bOnlyByWire && (
|
||||||
|
(PowerBlock == E_BLOCK_REDSTONE_TORCH_ON) ||
|
||||||
|
(PowerBlock == E_BLOCK_LEVER)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (PowerBlock == E_BLOCK_REDSTONE_REPEATER_ON ) // A repeater pointing towards block is regarded as wire
|
if (PowerBlock == E_BLOCK_REDSTONE_REPEATER_ON ) // A repeater pointing towards block is regarded as wire
|
||||||
{
|
{
|
||||||
if (IsRepeaterPointingTo( a_PowerPos, m_World->GetBlockMeta( a_PowerPos ), a_BlockPos ) )
|
if (IsRepeaterPointingTo( a_PowerPos, m_World->GetBlockMeta( a_PowerPos ), a_BlockPos ) )
|
||||||
@ -614,7 +650,7 @@ bool cRedstoneSimulator::IsPowered( const Vector3i & a_BlockPos, bool a_bOnlyByW
|
|||||||
{
|
{
|
||||||
Vector3i Behind = a_BlockPos - GetRepeaterDirection( m_World->GetBlockMeta( a_BlockPos ) );
|
Vector3i Behind = a_BlockPos - GetRepeaterDirection( m_World->GetBlockMeta( a_BlockPos ) );
|
||||||
BLOCKTYPE BehindBlock = m_World->GetBlock( Behind );
|
BLOCKTYPE BehindBlock = m_World->GetBlock( Behind );
|
||||||
if (BehindBlock == E_BLOCK_REDSTONE_TORCH_ON)
|
if ((BehindBlock == E_BLOCK_REDSTONE_TORCH_ON) || (BehindBlock == E_BLOCK_LEVER))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -666,17 +702,29 @@ cRedstoneSimulator::eRedstoneDirection cRedstoneSimulator::GetDirection( int a_X
|
|||||||
int Dir = REDSTONE_NONE;
|
int Dir = REDSTONE_NONE;
|
||||||
|
|
||||||
char NegX = m_World->GetBlock( a_X-1, a_Y, a_Z );
|
char NegX = m_World->GetBlock( a_X-1, a_Y, a_Z );
|
||||||
if( NegX == E_BLOCK_REDSTONE_WIRE || NegX == E_BLOCK_REDSTONE_TORCH_ON )
|
if (
|
||||||
|
(NegX == E_BLOCK_REDSTONE_WIRE) ||
|
||||||
|
(NegX == E_BLOCK_REDSTONE_TORCH_ON) ||
|
||||||
|
(NegX == E_BLOCK_LEVER)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
Dir |= (REDSTONE_X_POS);
|
Dir |= (REDSTONE_X_POS);
|
||||||
}
|
}
|
||||||
char PosX = m_World->GetBlock( a_X+1, a_Y, a_Z );
|
char PosX = m_World->GetBlock( a_X+1, a_Y, a_Z );
|
||||||
if( PosX == E_BLOCK_REDSTONE_WIRE || PosX == E_BLOCK_REDSTONE_TORCH_ON )
|
if (
|
||||||
|
(PosX == E_BLOCK_REDSTONE_WIRE) ||
|
||||||
|
(PosX == E_BLOCK_REDSTONE_TORCH_ON) ||
|
||||||
|
(PosX == E_BLOCK_LEVER)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
Dir |= (REDSTONE_X_NEG);
|
Dir |= (REDSTONE_X_NEG);
|
||||||
}
|
}
|
||||||
char NegZ = m_World->GetBlock( a_X, a_Y, a_Z-1 );
|
char NegZ = m_World->GetBlock( a_X, a_Y, a_Z-1 );
|
||||||
if( NegZ == E_BLOCK_REDSTONE_WIRE || NegZ == E_BLOCK_REDSTONE_TORCH_ON )
|
if (
|
||||||
|
(NegZ == E_BLOCK_REDSTONE_WIRE) ||
|
||||||
|
(NegZ == E_BLOCK_REDSTONE_TORCH_ON) ||
|
||||||
|
(NegZ == E_BLOCK_LEVER)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if( (Dir & REDSTONE_X_POS) && !(Dir & REDSTONE_X_NEG ) ) //corner
|
if( (Dir & REDSTONE_X_POS) && !(Dir & REDSTONE_X_NEG ) ) //corner
|
||||||
{
|
{
|
||||||
@ -691,7 +739,11 @@ cRedstoneSimulator::eRedstoneDirection cRedstoneSimulator::GetDirection( int a_X
|
|||||||
Dir |= REDSTONE_Z_POS;
|
Dir |= REDSTONE_Z_POS;
|
||||||
}
|
}
|
||||||
char PosZ = m_World->GetBlock( a_X, a_Y, a_Z+1 );
|
char PosZ = m_World->GetBlock( a_X, a_Y, a_Z+1 );
|
||||||
if( PosZ == E_BLOCK_REDSTONE_WIRE || PosZ == E_BLOCK_REDSTONE_TORCH_ON )
|
if (
|
||||||
|
(PosZ == E_BLOCK_REDSTONE_WIRE) ||
|
||||||
|
(PosZ == E_BLOCK_REDSTONE_TORCH_ON) ||
|
||||||
|
(PosZ == E_BLOCK_LEVER)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if( (Dir & REDSTONE_X_POS) && !(Dir & REDSTONE_X_NEG ) ) //corner
|
if( (Dir & REDSTONE_X_POS) && !(Dir & REDSTONE_X_NEG ) ) //corner
|
||||||
{
|
{
|
||||||
@ -853,6 +905,35 @@ Vector3i cRedstoneSimulator::GetRepeaterDirection(NIBBLETYPE a_MetaData)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NIBBLETYPE cRedstoneSimulator::LeverDirectionToMetaData(NIBBLETYPE a_Dir)
|
||||||
|
{
|
||||||
|
// Determine lever direction.
|
||||||
|
switch (a_Dir)
|
||||||
|
{
|
||||||
|
case BLOCK_FACE_TOP: return 0x6;
|
||||||
|
case BLOCK_FACE_EAST: return 0x1;
|
||||||
|
case BLOCK_FACE_WEST: return 0x2;
|
||||||
|
case BLOCK_FACE_SOUTH: return 0x3;
|
||||||
|
case BLOCK_FACE_NORTH: return 0x4;
|
||||||
|
case BLOCK_FACE_BOTTOM: return 0x0;
|
||||||
|
default: return 0x6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool cRedstoneSimulator::IsLeverOn (cWorld *a_World, const Vector3i & a_BlockPos)
|
||||||
|
{
|
||||||
|
// Extract the ON bit from metadata and return if true if it is set
|
||||||
|
return ((a_World->GetBlockMeta(a_BlockPos) & 0x8) == 0x8);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cRedstoneSimulator::SetRepeater( const Vector3i & a_Position, int a_Ticks, bool a_bPowerOn )
|
void cRedstoneSimulator::SetRepeater( const Vector3i & a_Position, int a_Ticks, bool a_bPowerOn )
|
||||||
{
|
{
|
||||||
for( RepeaterList::iterator itr = m_SetRepeaters.begin(); itr != m_SetRepeaters.end(); ++itr )
|
for( RepeaterList::iterator itr = m_SetRepeaters.begin(); itr != m_SetRepeaters.end(); ++itr )
|
||||||
|
@ -35,6 +35,8 @@ public:
|
|||||||
static bool IsRepeaterPointingAway(const Vector3i & a_RepeaterPos, char a_MetaData, const Vector3i & a_BlockPos);
|
static bool IsRepeaterPointingAway(const Vector3i & a_RepeaterPos, char a_MetaData, const Vector3i & a_BlockPos);
|
||||||
static NIBBLETYPE RepeaterRotationToMetaData(float a_Rotation);
|
static NIBBLETYPE RepeaterRotationToMetaData(float a_Rotation);
|
||||||
static Vector3i GetRepeaterDirection(NIBBLETYPE a_MetaData);
|
static Vector3i GetRepeaterDirection(NIBBLETYPE a_MetaData);
|
||||||
|
static NIBBLETYPE LeverDirectionToMetaData(NIBBLETYPE a_dir);
|
||||||
|
static bool cRedstoneSimulator::IsLeverOn(cWorld *a_World, const Vector3i & a_BlockPos);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Loading…
Reference in New Issue
Block a user