OpenTTD Source  20240919-master-gdf0233f4c2
WaterRegion Class Reference

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

WaterRegionDatadata
 
const OrthogonalTileArea tile_area
 

Detailed Description

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.

Member Function Documentation

◆ ForceUpdate()

void WaterRegion::ForceUpdate ( )
inline

Performs the connected component labeling and other data gathering.

See also
WaterRegion

Definition at line 126 of file water_regions.cpp.

References Debug.

◆ GetEdgeTraversabilityBits()

TWaterRegionTraversabilityBits WaterRegion::GetEdgeTraversabilityBits ( DiagDirection  side) const
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.

See also
GetLocalIndex() for a description of the coordinate system used.
Parameters
sideWhich side of the region we want to know the edge traversability of.
Returns
A value holding the edge traversability bits.

Definition at line 95 of file water_regions.cpp.

◆ GetLabel()

TWaterRegionPatchLabel WaterRegion::GetLabel ( TileIndex  tile) const
inline

Returns the patch label that was assigned to the tile.

Parameters
tileThe tile of which we want to retrieve the label.
Returns
The label assigned to the tile.

Definition at line 113 of file water_regions.cpp.

References OrthogonalTileArea::Contains(), and NumberOfPatches().

◆ GetLocalIndex()

int WaterRegion::GetLocalIndex ( TileIndex  tile) const
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.

Parameters
tileTile within the water region.
Returns
The local index.

Definition at line 73 of file water_regions.cpp.

References OrthogonalTileArea::Contains(), OrthogonalTileArea::tile, and TileX().

◆ HasCrossRegionAqueducts()

bool WaterRegion::HasCrossRegionAqueducts ( ) const
inline
Returns
Whether the water region contains aqueducts that cross the region boundaries.

Definition at line 106 of file water_regions.cpp.

◆ NumberOfPatches()

int WaterRegion::NumberOfPatches ( ) const
inline
Returns
The amount of individual water patches present within the water region. A value of 0 means there is no water present in the water region at all.

Definition at line 101 of file water_regions.cpp.

Referenced by GetLabel().


The documentation for this class was generated from the following file: