OpenTTD Source 20241224-master-gee860a5c8e
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 { 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.
 
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 radius to create non-desert around a river tile.
 

Detailed Description

Functions related to water (management)

Definition in file water.h.

Enumeration Type Documentation

◆ FloodingBehaviour

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 51 of file water.h.

References IntSqrt().

Referenced by CompaniesGenStatistics(), CompanyInfrastructureWindow::DrawWidget(), CompanyInfrastructureWindow::GetTotalMaintenanceCost(), and CompanyInfrastructureWindow::UpdateWidgetSize().

◆ 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 1300 of file water_cmd.cpp.

◆ DrawShipDepotSprite()

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

Definition at line 956 of file water_cmd.cpp.

◆ DrawShoreTile()

void DrawShoreTile ( Slope  tileh)

Definition at line 905 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 762 of file rail_cmd.cpp.

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

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 454 of file water_cmd.cpp.

References CircularTileSearch(), MakeRiver(), MarkTileDirtyByTile(), RIVER_OFFSET_DESERT_DISTANCE, and RiverModifyDesertZone().

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

◆ MakeWaterKeepingClass()

void MakeWaterKeepingClass ( TileIndex  tile,
Owner  o 
)

Definition at line 219 of file water_cmd.cpp.

◆ 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 1245 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(), HasBit(), 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 radius to create non-desert around a river tile.

Definition at line 42 of file water.h.

Referenced by CmdBuildCanal(), and MakeRiverAndModifyDesertZoneAround().