summaryrefslogtreecommitdiff
path: root/BlockCondition.cpp
diff options
context:
space:
mode:
authorJonas Ask2009-11-12 01:21:36 +0000
committerJonas Ask2009-11-12 01:21:36 +0000
commitb04bb54ef68a1e10b4126caece7b522d39a4ed05 (patch)
tree0c9d91412cc9f9bdc54330dbdbd27474602f0faa /BlockCondition.cpp
parent017d462239242224553e4bbb95b6352c7ab639ec (diff)
downloadstonesense-b04bb54ef68a1e10b4126caece7b522d39a4ed05.tar.gz
stonesense-b04bb54ef68a1e10b4126caece7b522d39a4ed05.tar.bz2
stonesense-b04bb54ef68a1e10b4126caece7b522d39a4ed05.tar.xz
Added 7c's Tower Cap. very nice.
ROTATIONS! Finally I think I got them working right (knock on wood). Redid a boat-load of stuff, not gonna list it all.
Diffstat (limited to 'BlockCondition.cpp')
-rw-r--r--BlockCondition.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/BlockCondition.cpp b/BlockCondition.cpp
index ebc4f55..e9d4c09 100644
--- a/BlockCondition.cpp
+++ b/BlockCondition.cpp
@@ -27,10 +27,10 @@ bool BlockCondition::Matches(Block* b){
if(type == Cond_NeighbourWall){
//dirTypes closebyWalls = findWallCloseTo(b->ownerSegment,b);
- bool n = hasWall( b->ownerSegment->getBlock( b->x, b->y - 1, b->z ) );
- bool s = hasWall( b->ownerSegment->getBlock( b->x, b->y + 1, b->z ) );
- bool w = hasWall( b->ownerSegment->getBlock( b->x - 1, b->y, b->z ) );
- bool e = hasWall( b->ownerSegment->getBlock( b->x + 1, b->y, b->z ) );
+ bool n = hasWall( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eUp ) );
+ bool s = hasWall( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eDown ) );
+ bool w = hasWall( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eLeft ) );
+ bool e = hasWall( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eRight ) );
if( value == eSimpleN && n) return true;
if( value == eSimpleS && s) return true;
@@ -45,10 +45,10 @@ bool BlockCondition::Matches(Block* b){
if(type == Cond_NeighbourSameBuilding){
int blocksBuildingID = b->building.info.type;
- bool n = hasBuildingOfID( b->ownerSegment->getBlock( b->x, b->y - 1, b->z ), blocksBuildingID );
- bool s = hasBuildingOfID( b->ownerSegment->getBlock( b->x, b->y + 1, b->z ), blocksBuildingID );
- bool w = hasBuildingOfID( b->ownerSegment->getBlock( b->x - 1, b->y, b->z ), blocksBuildingID);
- bool e = hasBuildingOfID( b->ownerSegment->getBlock( b->x + 1, b->y, b->z ), blocksBuildingID );
+ bool n = hasBuildingOfID( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eUp ), blocksBuildingID );
+ bool s = hasBuildingOfID( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eDown ), blocksBuildingID );
+ bool w = hasBuildingOfID( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eLeft ), blocksBuildingID);
+ bool e = hasBuildingOfID( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eRight ), blocksBuildingID );
if( value == eSimpleN && n) return true;
if( value == eSimpleS && s) return true;
@@ -60,15 +60,15 @@ bool BlockCondition::Matches(Block* b){
return false;
}
- if(type == Cond_NeighbourIdentical){
+ if(type == Cond_NeighbourIdentical){
int blocksBuildingIndex = b->building.index;
int blocksBuildingOcc = b->occ.bits.building;
- bool n = hasBuildingIdentity( b->ownerSegment->getBlock( b->x, b->y - 1, b->z ), blocksBuildingIndex, blocksBuildingOcc );
- bool s = hasBuildingIdentity( b->ownerSegment->getBlock( b->x, b->y + 1, b->z ), blocksBuildingIndex, blocksBuildingOcc );
- bool w = hasBuildingIdentity( b->ownerSegment->getBlock( b->x - 1, b->y, b->z ), blocksBuildingIndex, blocksBuildingOcc );
- bool e = hasBuildingIdentity( b->ownerSegment->getBlock( b->x + 1, b->y, b->z ), blocksBuildingIndex, blocksBuildingOcc );
+ bool n = hasBuildingIdentity( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eUp ), blocksBuildingIndex, blocksBuildingOcc );
+ bool s = hasBuildingIdentity( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eDown ), blocksBuildingIndex, blocksBuildingOcc );
+ bool w = hasBuildingIdentity( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eLeft ), blocksBuildingIndex, blocksBuildingOcc );
+ bool e = hasBuildingIdentity( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eRight ), blocksBuildingIndex, blocksBuildingOcc );
if( value == eSimpleN && n) return true;
if( value == eSimpleS && s) return true;
@@ -80,14 +80,14 @@ bool BlockCondition::Matches(Block* b){
return false;
}
- if(type == Cond_NeighbourSameIndex){
+ if(type == Cond_NeighbourSameIndex){
int blocksBuildingIndex = b->building.index;
- bool n = hasBuildingOfIndex( b->ownerSegment->getBlock( b->x, b->y - 1, b->z ), blocksBuildingIndex );
- bool s = hasBuildingOfIndex( b->ownerSegment->getBlock( b->x, b->y + 1, b->z ), blocksBuildingIndex );
- bool w = hasBuildingOfIndex( b->ownerSegment->getBlock( b->x - 1, b->y, b->z ), blocksBuildingIndex );
- bool e = hasBuildingOfIndex( b->ownerSegment->getBlock( b->x + 1, b->y, b->z ), blocksBuildingIndex );
+ bool n = hasBuildingOfIndex( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eUp ), blocksBuildingIndex );
+ bool s = hasBuildingOfIndex( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eDown ), blocksBuildingIndex );
+ bool w = hasBuildingOfIndex( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eLeft ), blocksBuildingIndex );
+ bool e = hasBuildingOfIndex( b->ownerSegment->getBlockRelativeTo( b->x, b->y, b->z, eRight ), blocksBuildingIndex );
if( value == eSimpleN && n) return true;
if( value == eSimpleS && s) return true;