Use named constants instead of magic values - block digging direction and torch placement
git-svn-id: http://mc-server.googlecode.com/svn/trunk@724 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
e6ac77a2c1
commit
897733a58e
@ -500,6 +500,13 @@ enum
|
||||
E_META_WOOL_RED = 14,
|
||||
E_META_WOOL_BLACK = 15,
|
||||
|
||||
// E_BLOCK_TORCH, E_BLOCK_REDSTONE_TORCH_OFF, E_BLOCK_REDSTONE_TORCH_ON metas:
|
||||
E_META_TORCH_EAST = 1, // east face of the block, pointing east
|
||||
E_META_TORCH_WEST = 2,
|
||||
E_META_TORCH_SOUTH = 3,
|
||||
E_META_TORCH_NORTH = 4,
|
||||
E_META_TORCH_FLOOR = 5,
|
||||
|
||||
// E_BLOCK_DOUBLE_STEP metas:
|
||||
E_META_DOUBLE_STEP_STONE = 0,
|
||||
E_META_DOUBLE_STEP_SANDSTONE = 1,
|
||||
|
@ -19,6 +19,20 @@ extern bool g_BlockOneHitDig[];
|
||||
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
BLOCK_FACE_BOTTOM = 0, // Interacting with the bottom face of the block
|
||||
BLOCK_FACE_TOP = 1, // Interacting with the top face of the block
|
||||
BLOCK_FACE_EAST = 2, // Interacting with the eastern face of the block
|
||||
BLOCK_FACE_WEST = 3, // Interacting with the western face of the block
|
||||
BLOCK_FACE_NORTH = 4, // Interacting with the northern face of the block
|
||||
BLOCK_FACE_SOUTH = 5, // Interacting with the southern face of the block
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline bool IsValidBlock( int a_BlockID ) //tolua_export
|
||||
{ //tolua_export
|
||||
if( a_BlockID > -1 &&
|
||||
@ -94,53 +108,39 @@ inline bool IsBlockTypeOfDirt(char a_BlockID)
|
||||
|
||||
inline void AddDirection( int & a_X, int & a_Y, int & a_Z, char a_Direction, bool a_bInverse = false )
|
||||
{
|
||||
if( !a_bInverse )
|
||||
if (!a_bInverse)
|
||||
{
|
||||
switch( a_Direction )
|
||||
switch (a_Direction)
|
||||
{
|
||||
case 0:
|
||||
a_Y--;
|
||||
break;
|
||||
case 1:
|
||||
a_Y++;
|
||||
break;
|
||||
case 2:
|
||||
a_Z--;
|
||||
break;
|
||||
case 3:
|
||||
a_Z++;
|
||||
break;
|
||||
case 4:
|
||||
a_X--;
|
||||
break;
|
||||
case 5:
|
||||
a_X++;
|
||||
break;
|
||||
};
|
||||
case BLOCK_FACE_BOTTOM: a_Y--; break;
|
||||
case BLOCK_FACE_TOP: a_Y++; break;
|
||||
case BLOCK_FACE_EAST: a_Z--; break;
|
||||
case BLOCK_FACE_WEST: a_Z++; break;
|
||||
case BLOCK_FACE_NORTH: a_X--; break;
|
||||
case BLOCK_FACE_SOUTH: a_X++; break;
|
||||
default:
|
||||
{
|
||||
ASSERT(!"Unknown direction");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch( a_Direction ) // other way around
|
||||
{
|
||||
case 0:
|
||||
a_Y++;
|
||||
break;
|
||||
case 1:
|
||||
a_Y--;
|
||||
break;
|
||||
case 2:
|
||||
a_Z++;
|
||||
break;
|
||||
case 3:
|
||||
a_Z--;
|
||||
break;
|
||||
case 4:
|
||||
a_X++;
|
||||
break;
|
||||
case 5:
|
||||
a_X--;
|
||||
break;
|
||||
};
|
||||
case BLOCK_FACE_BOTTOM: a_Y++; break;
|
||||
case BLOCK_FACE_TOP: a_Y--; break;
|
||||
case BLOCK_FACE_EAST: a_Z++; break;
|
||||
case BLOCK_FACE_WEST: a_Z--; break;
|
||||
case BLOCK_FACE_NORTH: a_X++; break;
|
||||
case BLOCK_FACE_SOUTH: a_X--; break;
|
||||
default:
|
||||
{
|
||||
ASSERT(!"Unknown direction");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
120
source/cTorch.h
120
source/cTorch.h
@ -1,6 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#pragma once
|
||||
#include "Vector3i.h"
|
||||
#include "Defines.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class cTorch //tolua_export
|
||||
{ //tolua_export
|
||||
@ -8,87 +13,64 @@ public:
|
||||
|
||||
static char DirectionToMetaData( char a_Direction ) //tolua_export
|
||||
{ //tolua_export
|
||||
switch( a_Direction )
|
||||
switch (a_Direction)
|
||||
{
|
||||
case 0x0:
|
||||
return 0x0;
|
||||
case 0x1:
|
||||
return 0x5; //standing on floor
|
||||
case 0x2:
|
||||
return 0x4; // south
|
||||
case 0x3:
|
||||
return 0x3; // north
|
||||
case 0x4:
|
||||
return 0x2; // west
|
||||
case 0x5:
|
||||
return 0x1; // east
|
||||
default:
|
||||
break;
|
||||
case BLOCK_FACE_BOTTOM: ASSERT(!"Shouldn't be getting this direction"); return 0;
|
||||
case BLOCK_FACE_TOP: return E_META_TORCH_FLOOR;
|
||||
case BLOCK_FACE_EAST: return E_META_TORCH_EAST;
|
||||
case BLOCK_FACE_WEST: return E_META_TORCH_WEST;
|
||||
case BLOCK_FACE_NORTH: return E_META_TORCH_NORTH;
|
||||
case BLOCK_FACE_SOUTH: return E_META_TORCH_SOUTH;
|
||||
default:
|
||||
{
|
||||
ASSERT(!"Unhandled torch direction!");
|
||||
break;
|
||||
}
|
||||
};
|
||||
return 0x0;
|
||||
} //tolua_export
|
||||
|
||||
|
||||
static char MetaDataToDirection( char a_MetaData ) //tolua_export
|
||||
static char MetaDataToDirection(char a_MetaData) //tolua_export
|
||||
{ //tolua_export
|
||||
switch( a_MetaData )
|
||||
switch (a_MetaData)
|
||||
{
|
||||
case 0x0:
|
||||
return 0x0;
|
||||
case 0x1:
|
||||
return 0x5;
|
||||
case 0x2:
|
||||
return 0x4;
|
||||
case 0x3:
|
||||
return 0x3;
|
||||
case 0x4:
|
||||
return 0x2;
|
||||
case 0x5:
|
||||
return 0x1;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
return 0x0;
|
||||
case E_META_TORCH_FLOOR: return BLOCK_FACE_TOP;
|
||||
case E_META_TORCH_EAST: return BLOCK_FACE_EAST;
|
||||
case E_META_TORCH_WEST: return BLOCK_FACE_WEST;
|
||||
case E_META_TORCH_NORTH: return BLOCK_FACE_NORTH;
|
||||
case E_META_TORCH_SOUTH: return BLOCK_FACE_SOUTH;
|
||||
default:
|
||||
{
|
||||
ASSERT(!"Unhandled torch metadata");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
} //tolua_export
|
||||
|
||||
static bool IsAttachedTo( const Vector3i & a_TorchPos, char a_TorchMeta, const Vector3i & a_BlockPos )
|
||||
|
||||
static bool IsAttachedTo(const Vector3i & a_TorchPos, char a_TorchMeta, const Vector3i & a_BlockPos)
|
||||
{
|
||||
switch( a_TorchMeta )
|
||||
switch (a_TorchMeta)
|
||||
{
|
||||
case 0x0:
|
||||
case 0x5: // On floor
|
||||
if( (a_TorchPos - a_BlockPos).Equals( Vector3i(0, 1, 0 ) ) )
|
||||
case 0x0:
|
||||
case E_META_TORCH_FLOOR: return ((a_TorchPos - a_BlockPos).Equals(Vector3i(0, 1, 0)));
|
||||
case E_META_TORCH_EAST: return ((a_TorchPos - a_BlockPos).Equals(Vector3i(0, 0, -1)));
|
||||
case E_META_TORCH_WEST: return ((a_TorchPos - a_BlockPos).Equals(Vector3i(0, 0, 1)));
|
||||
case E_META_TORCH_NORTH: return ((a_TorchPos - a_BlockPos).Equals(Vector3i(-1, 0, 0)));
|
||||
case E_META_TORCH_SOUTH: return ((a_TorchPos - a_BlockPos).Equals(Vector3i(1, 0, 0)));
|
||||
default:
|
||||
{
|
||||
return true;
|
||||
ASSERT(!"Unhandled torch meta!");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0x4: // South -Z
|
||||
if( (a_TorchPos - a_BlockPos).Equals( Vector3i(0, 0, -1 ) ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case 0x3: // North +Z
|
||||
if( (a_TorchPos - a_BlockPos).Equals( Vector3i(0, 0, 1 ) ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case 0x2: // West -X
|
||||
if( (a_TorchPos - a_BlockPos).Equals( Vector3i(-1, 0, 0 ) ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case 0x1: // East +X
|
||||
if( (a_TorchPos - a_BlockPos).Equals( Vector3i( 1, 0, 0 ) ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}; //tolua_export
|
||||
} ; //tolua_export
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user