(svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
This commit is contained in:
48
src/road.h
48
src/road.h
@@ -115,6 +115,36 @@ static inline RoadBits ComplementRoadBits(RoadBits r)
|
||||
return (RoadBits)(ROAD_ALL ^ r);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the mirrored RoadBits
|
||||
*
|
||||
* Simply move the bits to their new position.
|
||||
*
|
||||
* @param r The given RoadBits value
|
||||
* @return the mirrored
|
||||
*/
|
||||
static inline RoadBits MirrorRoadBits(RoadBits r)
|
||||
{
|
||||
return (RoadBits)(GB(r, 0, 2) << 2 | GB(r, 2, 2));
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate rotated RoadBits
|
||||
*
|
||||
* Move the Roadbits clockwise til they are in their final position.
|
||||
*
|
||||
* @param r The given RoadBits value
|
||||
* @param rot The given Rotation angle
|
||||
* @return the rotated
|
||||
*/
|
||||
static inline RoadBits RotateRoadBits(RoadBits r, DiagDirDiff rot)
|
||||
{
|
||||
for (; rot > (DiagDirDiff)0; rot--){
|
||||
r = (RoadBits)(GB(r, 0, 1) << 3 | GB(r, 1, 3));
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the road-part which belongs to the given DiagDirection
|
||||
*
|
||||
@@ -129,6 +159,16 @@ static inline RoadBits DiagDirToRoadBits(DiagDirection d)
|
||||
return (RoadBits)(ROAD_NW << (3 ^ d));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return if the tile is a valid tile for a crossing.
|
||||
*
|
||||
* @note function is overloaded
|
||||
* @param tile the curent tile
|
||||
* @param ax the axis of the road over the rail
|
||||
* @return true if it is a valid tile
|
||||
*/
|
||||
bool IsPossibleCrossing(const TileIndex tile, Axis ax);
|
||||
|
||||
/**
|
||||
* Checks whether the trackdir means that we are reversing.
|
||||
* @param dir the trackdir to check
|
||||
@@ -149,6 +189,14 @@ static inline bool IsStraightRoadTrackdir(Trackdir dir)
|
||||
return (dir & 0x06) == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up unneccesary RoadBits of a planed tile.
|
||||
* @param tile current tile
|
||||
* @param org_rb planed RoadBits
|
||||
* @return optimised RoadBits
|
||||
*/
|
||||
RoadBits CleanUpRoadBits(const TileIndex tile, RoadBits org_rb);
|
||||
|
||||
/**
|
||||
* Is it allowed to remove the given road bits from the given tile?
|
||||
* @param tile the tile to remove the road from
|
||||
|
Reference in New Issue
Block a user