diff options
author | rubidium <rubidium@openttd.org> | 2007-09-26 16:12:43 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2007-09-26 16:12:43 +0000 |
commit | 01edaeec578bddb73b4513baf9d8bfe5f9a886b0 (patch) | |
tree | 226af8de8514a96ed474dc9590f68e2c517a31d9 /src/road.h | |
parent | a85e18c92200590c84a6c3d3f60dd41f394cc0fe (diff) | |
download | openttd-01edaeec578bddb73b4513baf9d8bfe5f9a886b0.tar.xz |
(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.
Diffstat (limited to 'src/road.h')
-rw-r--r-- | src/road.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/road.h b/src/road.h index 051508971..e97600f1a 100644 --- a/src/road.h +++ b/src/road.h @@ -116,6 +116,36 @@ static inline RoadBits ComplementRoadBits(RoadBits 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 * * This function returns a RoadBits value which belongs to @@ -130,6 +160,16 @@ static inline RoadBits DiagDirToRoadBits(DiagDirection 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 * @return true if it is a reversing road trackdir @@ -150,6 +190,14 @@ static inline bool IsStraightRoadTrackdir(Trackdir dir) } /** + * 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 * @param remove the roadbits that are going to be removed |