OpenTTD Source 20250924-master-gbec4e71d53
water.h File Reference

Functions related to water (management) More...

#include "water_map.h"
#include "economy_func.h"

Go to the source code of this file.

Enumerations

enum  FloodingBehaviour : uint8_t { FLOOD_NONE , FLOOD_ACTIVE , FLOOD_PASSIVE , FLOOD_DRYUP }
 Describes the behaviour of a tile during flooding. More...
 

Functions

FloodingBehaviour GetFloodingBehaviour (TileIndex tile)
 Returns the behaviour of a tile during flooding.
 
void ClearNeighbourNonFloodingStates (TileIndex tile)
 Clear non-flooding state of the tiles around a tile.
 
void TileLoop_Water (TileIndex tile)
 Let a water tile floods its diagonal adjoining tiles called from tunnelbridge_cmd, and by TileLoop_Industry() and TileLoop_Track()
 
bool FloodHalftile (TileIndex t)
 Called from water_cmd if a non-flat rail-tile gets flooded and should be converted to shore.
 
void ConvertGroundTilesIntoWaterTiles ()
 
void DrawShipDepotSprite (int x, int y, Axis axis, DepotPart part)
 
void DrawWaterClassGround (const struct TileInfo *ti)
 
void DrawShoreTile (Slope tileh)
 
void MakeWaterKeepingClass (TileIndex tile, Owner o)
 
void CheckForDockingTile (TileIndex t)
 Mark the supplied tile as a docking tile if it is suitable for docking.
 
void MakeRiverAndModifyDesertZoneAround (TileIndex tile)
 Make a river tile and remove desert directly around it.
 
void RiverMakeWider (TileIndex tile, TileIndex origin_tile)
 Widen a river by expanding into adjacent tiles via circular tile search.
 
bool RiverFlowsDown (TileIndex begin, TileIndex end)
 Check whether a river at begin could (logically) flow down to end.
 
bool IsWateredTile (TileIndex tile, Direction from)
 return true if a tile is a water tile wrt.
 
Money CanalMaintenanceCost (uint32_t num)
 Calculates the maintenance cost of a number of canal tiles.
 

Variables

static const uint RIVER_OFFSET_DESERT_DISTANCE = 5
 Circular tile search diameter to create non-desert around a river tile.
 

Detailed Description

Functions related to water (management)

Definition in file water.h.

Enumeration Type Documentation

◆ FloodingBehaviour

enum FloodingBehaviour : uint8_t

Describes the behaviour of a tile during flooding.

Enumerator
FLOOD_NONE 

The tile does not flood neighboured tiles.

FLOOD_ACTIVE 

The tile floods neighboured tiles.

FLOOD_PASSIVE 

The tile does not actively flood neighboured tiles, but it prevents them from drying up.

FLOOD_DRYUP 

The tile drys up if it is not constantly flooded from neighboured tiles.

Definition at line 19 of file water.h.

Function Documentation

◆ CanalMaintenanceCost()

Money CanalMaintenanceCost ( uint32_t  num)
inline

Calculates the maintenance cost of a number of canal tiles.

Parameters
numNumber of canal tiles.
Returns
Total cost.

Definition at line 53 of file water.h.

References IntSqrt().

Referenced by CompaniesGenStatistics().

◆ CheckForDockingTile()

void CheckForDockingTile ( TileIndex  t)

◆ ClearNeighbourNonFloodingStates()

void ClearNeighbourNonFloodingStates ( TileIndex  tile)

Clear non-flooding state of the tiles around a tile.

Parameters
tileThe centre of the tile where other tiles' non-flooding state is cleared.

Definition at line 97 of file water_cmd.cpp.

References DIR_BEGIN, DIR_END, IsTileType(), IsValidTile(), MP_WATER, SetNonFloodingWaterTile(), and TileOffsByDir().

Referenced by BuildObject(), CmdBuildBuoy(), CmdLandscapeClear(), PlantTreesOnTile(), and RemoveLock().

◆ ConvertGroundTilesIntoWaterTiles()

void ConvertGroundTilesIntoWaterTiles ( )

Definition at line 1316 of file water_cmd.cpp.

◆ DrawShipDepotSprite()

void DrawShipDepotSprite ( int  x,
int  y,
Axis  axis,
DepotPart  part 
)

Definition at line 971 of file water_cmd.cpp.

◆ DrawShoreTile()

void DrawShoreTile ( Slope  tileh)

Definition at line 915 of file water_cmd.cpp.

◆ FloodHalftile()

bool FloodHalftile ( TileIndex  t)

Called from water_cmd if a non-flat rail-tile gets flooded and should be converted to shore.

The function floods the lower halftile, if the tile has a halftile foundation.

Parameters
tThe tile to flood.
Returns
true if something was flooded.

Definition at line 761 of file rail_cmd.cpp.

References _current_company, ApplyFoundationToSlope(), CornerToTrackBits(), Execute, FindFirstTrack(), GetHighestSlopeCorner(), GetRailFoundation(), GetTileSlope(), GetTrackBits(), IsNonContinuousFoundation(), IsPlainRailTile(), IsSlopeWithOneCornerRaised(), IsSlopeWithThreeCornersRaised(), IsSteepSlope(), MakeShore(), MarkTileDirtyByTile(), OppositeCorner(), OWNER_WATER, RAIL_GROUND_WATER, Backup< T >::Restore(), and TRACK_BIT_NONE.

Referenced by DoFloodTile().

◆ GetFloodingBehaviour()

FloodingBehaviour GetFloodingBehaviour ( TileIndex  tile)

◆ IsWateredTile()

◆ MakeRiverAndModifyDesertZoneAround()

void MakeRiverAndModifyDesertZoneAround ( TileIndex  tile)

Make a river tile and remove desert directly around it.

Parameters
tileThe tile to change into river and create non-desert around

Definition at line 464 of file water_cmd.cpp.

References GetTropicZone(), MakeRiver(), MarkTileDirtyByTile(), Random, RIVER_OFFSET_DESERT_DISTANCE, SetTropicZone(), TROPICZONE_DESERT, and TROPICZONE_NORMAL.

Referenced by FlowRiver(), MakeLake(), and RiverMakeWider().

◆ MakeWaterKeepingClass()

void MakeWaterKeepingClass ( TileIndex  tile,
Owner  o 
)

Definition at line 218 of file water_cmd.cpp.

◆ RiverFlowsDown()

bool RiverFlowsDown ( TileIndex  begin,
TileIndex  end 
)

Check whether a river at begin could (logically) flow down to end.

Parameters
beginThe origin of the flow.
endThe destination of the flow.
Returns
True iff the water can be flowing down.

Definition at line 1183 of file landscape.cpp.

References DistanceManhattan(), GetTileSlopeZ(), IsInclinedSlope(), and SLOPE_FLAT.

Referenced by FlowRiver().

◆ RiverMakeWider()

void RiverMakeWider ( TileIndex  tile,
TileIndex  origin_tile 
)

◆ TileLoop_Water()

void TileLoop_Water ( TileIndex  tile)

Let a water tile floods its diagonal adjoining tiles called from tunnelbridge_cmd, and by TileLoop_Industry() and TileLoop_Track()

Parameters
tilethe water/shore tile that floods

Definition at line 1261 of file water_cmd.cpp.

References _flood_from_dirs, AddTileIndexDiffCWrap(), AmbientSoundEffect(), DIR_BEGIN, DIR_END, DoDryUp(), DoFloodTile(), FLOOD_ACTIVE, FLOOD_DRYUP, FLOOD_PASSIVE, GetFloodingBehaviour(), GetFoundationSlope(), GetTreeGround(), INVALID_TILE, IsBuoy(), IsDock(), IsNonFloodingWaterTile(), IsTileType(), IsValidTile(), MP_STATION, MP_TREES, MP_WATER, ReverseDir(), SetNonFloodingWaterTile(), SLOPE_HALFTILE_MASK, SLOPE_STEEP, TileIndexDiffCByDir(), and TREE_GROUND_SHORE.

Variable Documentation

◆ RIVER_OFFSET_DESERT_DISTANCE

const uint RIVER_OFFSET_DESERT_DISTANCE = 5
static

Circular tile search diameter to create non-desert around a river tile.

Definition at line 44 of file water.h.

Referenced by CmdBuildCanal(), and MakeRiverAndModifyDesertZoneAround().