OpenTTD Source 20250428-master-ga5578166bb
|
Represents a square section of the map of a fixed size. More...
Public Member Functions | |
WaterRegion (int region_x, int region_y, WaterRegionData &water_region_data) | |
OrthogonalTileIterator | begin () const |
OrthogonalTileIterator | end () const |
TWaterRegionTraversabilityBits | GetEdgeTraversabilityBits (DiagDirection side) const |
Returns a set of bits indicating whether an edge tile on a particular side is traversable or not. | |
int | NumberOfPatches () const |
bool | HasCrossRegionAqueducts () const |
TWaterRegionPatchLabel | GetLabel (TileIndex tile) const |
Returns the patch label that was assigned to the tile. | |
void | ForceUpdate () |
Performs the connected component labeling and other data gathering. | |
void | PrintDebugInfo () |
Private Member Functions | |
int | GetLocalIndex (TileIndex tile) const |
Returns the local index of the tile within the region. | |
Private Attributes | |
WaterRegionData & | data |
const OrthogonalTileArea | tile_area |
Represents a square section of the map of a fixed size.
Within this square individual unconnected patches of water are identified using a Connected Component Labeling (CCL) algorithm. Note that all information stored in this class applies only to tiles within the square section, there is no knowledge about the rest of the map. This makes it easy to invalidate and update a water region if any changes are made to it, such as construction or terraforming.
Definition at line 62 of file water_regions.cpp.
|
inline |
Definition at line 81 of file water_regions.cpp.
|
inline |
Definition at line 86 of file water_regions.cpp.
|
inline |
Definition at line 87 of file water_regions.cpp.
|
inline |
Performs the connected component labeling and other data gathering.
Definition at line 127 of file water_regions.cpp.
References AXIS_X, OrthogonalTileArea::Contains(), Debug, DiagdirBetweenTiles(), DiagDirToAxis(), DistanceManhattan(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::Follow(), GetLocalIndex(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::is_bridge, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::new_tile, NumberOfPatches(), SetBit(), OrthogonalTileArea::tile, TileX(), TileY(), TrackBitsToTrackdirBits(), and TRACKDIR_BIT_NONE.
|
inline |
Returns a set of bits indicating whether an edge tile on a particular side is traversable or not.
These values can be used to determine whether a ship can enter/leave the region through a particular edge tile.
side | Which side of the region we want to know the edge traversability of. |
Definition at line 96 of file water_regions.cpp.
Referenced by VisitAdjacentWaterRegionPatchNeighbours().
|
inline |
Returns the patch label that was assigned to the tile.
tile | The tile of which we want to retrieve the label. |
Definition at line 114 of file water_regions.cpp.
References OrthogonalTileArea::Contains(), GetLocalIndex(), and NumberOfPatches().
Referenced by GetWaterRegionPatchInfo(), and VisitAdjacentWaterRegionPatchNeighbours().
|
inlineprivate |
Returns the local index of the tile within the region.
The N corner represents 0, the x direction is positive in the SW direction, and Y is positive in the SE direction.
tile | Tile within the water region. |
Definition at line 74 of file water_regions.cpp.
References OrthogonalTileArea::Contains(), OrthogonalTileArea::tile, TileX(), and TileY().
Referenced by ForceUpdate(), and GetLabel().
|
inline |
Definition at line 107 of file water_regions.cpp.
Referenced by VisitWaterRegionPatchNeighbours().
|
inline |
Definition at line 102 of file water_regions.cpp.
Referenced by ForceUpdate(), GetLabel(), and VisitAdjacentWaterRegionPatchNeighbours().
|
inline |
Definition at line 195 of file water_regions.cpp.
|
private |
Definition at line 65 of file water_regions.cpp.
|
private |
Definition at line 66 of file water_regions.cpp.