(svn r15789) -Codechange: Add DiagdirBetweenTiles() and use it.
This commit is contained in:
@@ -92,7 +92,7 @@ static void _DoCommandReturnBuildBridge1(class AIInstance *instance)
|
||||
TileIndex end = AIObject::GetCallbackVariable(0);
|
||||
TileIndex start = AIObject::GetCallbackVariable(1);
|
||||
|
||||
DiagDirection dir_1 = (DiagDirection)((::TileX(start) == ::TileX(end)) ? (::TileY(start) < ::TileY(end) ? DIAGDIR_NW : DIAGDIR_SE) : (::TileX(start) < ::TileX(end) ? DIAGDIR_NE : DIAGDIR_SW));
|
||||
DiagDirection dir_1 = ::DiagdirBetweenTiles(end, start);
|
||||
DiagDirection dir_2 = ::ReverseDiagDir(dir_1);
|
||||
|
||||
if (!AIObject::DoCommand(start + ::TileOffsByDiagDir(dir_1), ::DiagDirToRoadBits(dir_2) | (AIObject::GetRoadType() << 4), 0, CMD_BUILD_ROAD, NULL, &_DoCommandReturnBuildBridge2)) return false;
|
||||
@@ -107,7 +107,7 @@ static void _DoCommandReturnBuildBridge1(class AIInstance *instance)
|
||||
TileIndex end = AIObject::GetCallbackVariable(0);
|
||||
TileIndex start = AIObject::GetCallbackVariable(1);
|
||||
|
||||
DiagDirection dir_1 = (DiagDirection)((::TileX(start) == ::TileX(end)) ? (::TileY(start) < ::TileY(end) ? DIAGDIR_NW : DIAGDIR_SE) : (::TileX(start) < ::TileX(end) ? DIAGDIR_NE : DIAGDIR_SW));
|
||||
DiagDirection dir_1 = ::DiagdirBetweenTiles(end, start);
|
||||
DiagDirection dir_2 = ::ReverseDiagDir(dir_1);
|
||||
|
||||
return AIObject::DoCommand(end + ::TileOffsByDiagDir(dir_2), ::DiagDirToRoadBits(dir_1) | (AIObject::GetRoadType() << 4), 0, CMD_BUILD_ROAD);
|
||||
|
@@ -50,9 +50,8 @@
|
||||
|
||||
/* Tiles not neighbouring */
|
||||
if (::DistanceManhattan(t1, t2) != 1) return false;
|
||||
if (t1 > t2) Swap(t1, t2);
|
||||
|
||||
DiagDirection to_other_tile = (TileX(t1) == TileX(t2)) ? DIAGDIR_SE : DIAGDIR_SW;
|
||||
DiagDirection to_other_tile = ::DiagdirBetweenTiles(t1, t2);
|
||||
|
||||
/* Determine the reachable tracks from the shared edge */
|
||||
TrackBits gtts2 = ::TrackStatusToTrackBits(::GetTileTrackStatus(t2, TRANSPORT_WATER, 0, to_other_tile)) & ::DiagdirReachesTracks(to_other_tile);
|
||||
|
@@ -86,7 +86,7 @@ static void _DoCommandReturnBuildTunnel1(class AIInstance *instance)
|
||||
TileIndex end = AIObject::GetCallbackVariable(0);
|
||||
TileIndex start = AITunnel::GetOtherTunnelEnd(end);
|
||||
|
||||
DiagDirection dir_1 = (DiagDirection)((::TileX(start) == ::TileX(end)) ? (::TileY(start) < ::TileY(end) ? DIAGDIR_NW : DIAGDIR_SE) : (::TileX(start) < ::TileX(end) ? DIAGDIR_NE : DIAGDIR_SW));
|
||||
DiagDirection dir_1 = ::DiagdirBetweenTiles(end, start);
|
||||
DiagDirection dir_2 = ::ReverseDiagDir(dir_1);
|
||||
|
||||
if (!AIObject::DoCommand(start + ::TileOffsByDiagDir(dir_1), ::DiagDirToRoadBits(dir_2) | (AIObject::GetRoadType() << 4), 0, CMD_BUILD_ROAD, NULL, &_DoCommandReturnBuildTunnel2)) return false;
|
||||
@@ -101,7 +101,7 @@ static void _DoCommandReturnBuildTunnel1(class AIInstance *instance)
|
||||
TileIndex end = AIObject::GetCallbackVariable(0);
|
||||
TileIndex start = AITunnel::GetOtherTunnelEnd(end);
|
||||
|
||||
DiagDirection dir_1 = (DiagDirection)((::TileX(start) == ::TileX(end)) ? (::TileY(start) < ::TileY(end) ? DIAGDIR_NW : DIAGDIR_SE) : (::TileX(start) < ::TileX(end) ? DIAGDIR_NE : DIAGDIR_SW));
|
||||
DiagDirection dir_1 = ::DiagdirBetweenTiles(end, start);
|
||||
DiagDirection dir_2 = ::ReverseDiagDir(dir_1);
|
||||
|
||||
return AIObject::DoCommand(end + ::TileOffsByDiagDir(dir_2), ::DiagDirToRoadBits(dir_1) | (AIObject::GetRoadType() << 4), 0, CMD_BUILD_ROAD);
|
||||
|
Reference in New Issue
Block a user