OpenTTD Source 20250428-master-g68ba2735ea
tile_cmd.h File Reference

Generic 'commands' that can be performed on all tiles. More...

#include "command_type.h"
#include "vehicle_type.h"
#include "cargo_type.h"
#include "track_type.h"
#include "tile_map.h"
#include "timer/timer_game_calendar.h"

Go to the source code of this file.

Data Structures

struct  TileInfo
 Tile information, used while rendering the tile. More...
 
struct  TileDesc
 Tile description for the 'land area information' tool. More...
 
struct  TileTypeProcs
 Set of callback functions for performing tile operations of a given tile type. More...
 

Typedefs

using VehicleEnterTileStates = EnumBitSet< VehicleEnterTileState, uint8_t >
 
typedef void DrawTileProc(TileInfo *ti)
 Tile callback function signature for drawing a tile and its contents to the screen.
 
typedef int GetSlopeZProc(TileIndex tile, uint x, uint y, bool ground_vehicle)
 Tile callback function signature for obtaining the world Z coordinate of a given point of a tile.
 
typedef CommandCost ClearTileProc(TileIndex tile, DoCommandFlags flags)
 
typedef void AddAcceptedCargoProc(TileIndex tile, CargoArray &acceptance, CargoTypes &always_accepted)
 Tile callback function signature for obtaining cargo acceptance of a tile.
 
typedef void GetTileDescProc(TileIndex tile, TileDesc &td)
 Tile callback function signature for obtaining a tile description.
 
typedef TrackStatus GetTileTrackStatusProc(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
 Tile callback function signature for getting the possible tracks that can be taken on a given tile by a given transport.
 
typedef void AddProducedCargoProc(TileIndex tile, CargoArray &produced)
 Tile callback function signature for obtaining the produced cargo of a tile.
 
typedef bool ClickTileProc(TileIndex tile)
 
typedef void AnimateTileProc(TileIndex tile)
 
typedef void TileLoopProc(TileIndex tile)
 
typedef void ChangeTileOwnerProc(TileIndex tile, Owner old_owner, Owner new_owner)
 
typedef VehicleEnterTileStates VehicleEnterTileProc(Vehicle *v, TileIndex tile, int x, int y)
 
typedef Foundation GetFoundationProc(TileIndex tile, Slope tileh)
 
typedef CommandCost TerraformTileProc(TileIndex tile, DoCommandFlags flags, int z_new, Slope tileh_new)
 Tile callback function signature of the terraforming callback.
 

Enumerations

enum class  VehicleEnterTileState : uint8_t { EnteredStation , EnteredWormhole , CannotEnter }
 

Functions

TrackStatus GetTileTrackStatus (TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side=INVALID_DIAGDIR)
 Returns information about trackdirs and signal states.
 
VehicleEnterTileStates VehicleEnterTile (Vehicle *v, TileIndex tile, int x, int y)
 Call the tile callback function for a vehicle entering a tile.
 
void ChangeTileOwner (TileIndex tile, Owner old_owner, Owner new_owner)
 Change the owner of a tile.
 
void GetTileDesc (TileIndex tile, TileDesc &td)
 
void AddAcceptedCargo (TileIndex tile, CargoArray &acceptance, CargoTypes *always_accepted)
 
void AddProducedCargo (TileIndex tile, CargoArray &produced)
 
bool MayAnimateTile (TileIndex tile)
 Test if a tile may be animated.
 
void AnimateTile (TileIndex tile)
 
bool ClickTile (TileIndex tile)
 

Variables

const TileTypeProcs *const _tile_type_procs [16]
 Tile callback functions for each type of tile.
 

Detailed Description

Generic 'commands' that can be performed on all tiles.

Definition in file tile_cmd.h.

Typedef Documentation

◆ AddAcceptedCargoProc

typedef void AddAcceptedCargoProc(TileIndex tile, CargoArray &acceptance, CargoTypes &always_accepted)

Tile callback function signature for obtaining cargo acceptance of a tile.

Parameters
tileTile queried for its accepted cargo
acceptanceStorage destination of the cargo acceptance in 1/8
always_acceptedBitmask of always accepted cargo types

Definition at line 85 of file tile_cmd.h.

◆ AddProducedCargoProc

typedef void AddProducedCargoProc(TileIndex tile, CargoArray &produced)

Tile callback function signature for obtaining the produced cargo of a tile.

Parameters
tileTile being queried
producedDestination array for produced cargo

Definition at line 114 of file tile_cmd.h.

◆ AnimateTileProc

typedef void AnimateTileProc(TileIndex tile)

Definition at line 116 of file tile_cmd.h.

◆ ChangeTileOwnerProc

typedef void ChangeTileOwnerProc(TileIndex tile, Owner old_owner, Owner new_owner)

Definition at line 118 of file tile_cmd.h.

◆ ClearTileProc

typedef CommandCost ClearTileProc(TileIndex tile, DoCommandFlags flags)

Definition at line 77 of file tile_cmd.h.

◆ ClickTileProc

typedef bool ClickTileProc(TileIndex tile)

Definition at line 115 of file tile_cmd.h.

◆ DrawTileProc

typedef void DrawTileProc(TileInfo *ti)

Tile callback function signature for drawing a tile and its contents to the screen.

Parameters
tiInformation about the tile to draw

Definition at line 63 of file tile_cmd.h.

◆ GetFoundationProc

typedef Foundation GetFoundationProc(TileIndex tile, Slope tileh)

Definition at line 121 of file tile_cmd.h.

◆ GetSlopeZProc

typedef int GetSlopeZProc(TileIndex tile, uint x, uint y, bool ground_vehicle)

Tile callback function signature for obtaining the world Z coordinate of a given point of a tile.

Parameters
tileThe queries tile for the Z coordinate.
xWorld X coordinate in tile "units".
yWorld Y coordinate in tile "units".
ground_vehicleWhether to get the Z coordinate of the ground vehicle, or the ground.
Returns
World Z coordinate at tile ground (vehicle) level, including slopes and foundations.
See also
GetSlopePixelZ

Definition at line 76 of file tile_cmd.h.

◆ GetTileDescProc

typedef void GetTileDescProc(TileIndex tile, TileDesc &td)

Tile callback function signature for obtaining a tile description.

Parameters
tileTile being queried
tdStorage pointer for returned tile description

Definition at line 92 of file tile_cmd.h.

◆ GetTileTrackStatusProc

typedef TrackStatus GetTileTrackStatusProc(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)

Tile callback function signature for getting the possible tracks that can be taken on a given tile by a given transport.

The return value contains the existing trackdirs and signal states.

see track_func.h for usage of TrackStatus.

Parameters
tilethe tile to get the track status from
modethe mode of transportation
sub_modeused to differentiate between different kinds within the mode
Returns
the track status information

Definition at line 107 of file tile_cmd.h.

◆ TerraformTileProc

typedef CommandCost TerraformTileProc(TileIndex tile, DoCommandFlags flags, int z_new, Slope tileh_new)

Tile callback function signature of the terraforming callback.

The function is called when a tile is affected by a terraforming operation. It has to check if terraforming of the tile is allowed and return extra terraform-cost that depend on the tiletype. With DoCommandFlag::Execute in flags it has to perform tiletype-specific actions (like clearing land etc., but not the terraforming itself).

Note
The terraforming has not yet taken place. So GetTileZ() and GetTileSlope() refer to the landscape before the terraforming operation.
Parameters
tileThe involved tile.
flagsCommand flags passed to the terraform command (DoCommandFlag::Execute, DoCommandFlag::QueryCost, etc.).
z_newTileZ after terraforming.
tileh_newSlope after terraforming.
Returns
Error code or extra cost for terraforming (like clearing land, building foundations, etc., but not the terraforming itself.)

Definition at line 138 of file tile_cmd.h.

◆ TileLoopProc

typedef void TileLoopProc(TileIndex tile)

Definition at line 117 of file tile_cmd.h.

◆ VehicleEnterTileProc

typedef VehicleEnterTileStates VehicleEnterTileProc(Vehicle *v, TileIndex tile, int x, int y)

Definition at line 120 of file tile_cmd.h.

◆ VehicleEnterTileStates

Definition at line 26 of file tile_cmd.h.

Enumeration Type Documentation

◆ VehicleEnterTileState

enum class VehicleEnterTileState : uint8_t
strong
Enumerator
EnteredStation 

The vehicle entered a station.

EnteredWormhole 

The vehicle either entered a bridge, tunnel or depot tile (this includes the last tile of the bridge/tunnel)

CannotEnter 

The vehicle cannot enter the tile.

Definition at line 20 of file tile_cmd.h.

Function Documentation

◆ AddAcceptedCargo()

void AddAcceptedCargo ( TileIndex  tile,
CargoArray acceptance,
CargoTypes *  always_accepted 
)
inline

Definition at line 168 of file tile_cmd.h.

◆ AddProducedCargo()

void AddProducedCargo ( TileIndex  tile,
CargoArray produced 
)
inline

Definition at line 176 of file tile_cmd.h.

◆ AnimateTile()

void AnimateTile ( TileIndex  tile)
inline

Definition at line 193 of file tile_cmd.h.

◆ ChangeTileOwner()

void ChangeTileOwner ( TileIndex  tile,
Owner  old_owner,
Owner  new_owner 
)

Change the owner of a tile.

Parameters
tileTile to change
old_ownerCurrent owner of the tile
new_ownerNew owner of the tile

Definition at line 565 of file landscape.cpp.

References _tile_type_procs, and GetTileType().

Referenced by AfterLoadGame(), and ChangeOwnershipOfCompanyItems().

◆ ClickTile()

bool ClickTile ( TileIndex  tile)
inline

Definition at line 200 of file tile_cmd.h.

◆ GetTileDesc()

void GetTileDesc ( TileIndex  tile,
TileDesc td 
)

Definition at line 570 of file landscape.cpp.

◆ GetTileTrackStatus()

TrackStatus GetTileTrackStatus ( TileIndex  tile,
TransportType  mode,
uint  sub_mode,
DiagDirection  side 
)

Returns information about trackdirs and signal states.

If there is any trackbit at 'side', return all trackdirbits. For TRANSPORT_ROAD, return no trackbits if there is no roadbit (of given subtype) at given side.

Parameters
tiletile to get info about
modetransport type
sub_modefor TRANSPORT_ROAD, roadtypes to check
sideside we are entering from, INVALID_DIAGDIR to return all trackbits
Returns
trackdirbits and other info depending on 'mode'

Definition at line 554 of file landscape.cpp.

References _tile_type_procs, TileTypeProcs::get_tile_track_status_proc, and GetTileType().

Referenced by AfterLoadGame(), CheckRoadBlockedForOvertaking(), CYapfFollowShipT< Types >::CheckShipReverse(), DisasterTick_Submarine(), FixOwnerOfRailTrack(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::Follow(), GenericPlaceSignals(), GetTrackdirBitsForRoad(), MaskWireBits(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::QueryNewTileTrackStatus(), RoadFindPathToDest(), RoadVehicle::TileMayHaveSlopedTrack(), TrainCheckIfLineEnds(), TrainController(), TryPathReserve(), TryReserveRailTrack(), UnreserveRailTrack(), and UpdateSignalsInBuffer().

◆ MayAnimateTile()

bool MayAnimateTile ( TileIndex  tile)
inline

Test if a tile may be animated.

Parameters
tileTile to test.
Returns
True iff the type of the tile has a handler for tile animation.

Definition at line 188 of file tile_cmd.h.

References _tile_type_procs, and GetTileType().

Referenced by AfterLoadGame().

◆ VehicleEnterTile()

VehicleEnterTileStates VehicleEnterTile ( Vehicle v,
TileIndex  tile,
int  x,
int  y 
)

Call the tile callback function for a vehicle entering a tile.

Parameters
vVehicle entering the tile
tileTile entered
xX position
yY position
Returns
Some meta-data over the to be entered tile.
See also
VehicleEnterTileStates to see what the bits in the return value mean.

Definition at line 1808 of file vehicle.cpp.

References _tile_type_procs, GetTileType(), and TileTypeProcs::vehicle_enter_tile_proc.

Referenced by TrainController(), and UpdateStatusAfterSwap().

Variable Documentation

◆ _tile_type_procs

const TileTypeProcs* const _tile_type_procs[16]
extern