OpenTTD Source
20241108-master-g80f628063a
|
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. More... | |
int | NumberOfPatches () const |
bool | HasCrossRegionAqueducts () const |
TWaterRegionPatchLabel | GetLabel (TileIndex tile) const |
Returns the patch label that was assigned to the tile. More... | |
void | ForceUpdate () |
Performs the connected component labeling and other data gathering. More... | |
void | PrintDebugInfo () |
Private Member Functions | |
int | GetLocalIndex (TileIndex tile) const |
Returns the local index of the tile within the region. More... | |
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 61 of file water_regions.cpp.
|
inline |
Performs the connected component labeling and other data gathering.
Definition at line 126 of file water_regions.cpp.
References Debug.
|
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 95 of file water_regions.cpp.
|
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 113 of file water_regions.cpp.
References OrthogonalTileArea::Contains(), and NumberOfPatches().
|
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 73 of file water_regions.cpp.
References OrthogonalTileArea::Contains(), OrthogonalTileArea::tile, and TileX().
|
inline |
Definition at line 106 of file water_regions.cpp.
|
inline |
Definition at line 101 of file water_regions.cpp.
Referenced by GetLabel().