OpenTTD Source  20241108-master-g80f628063a
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

typedef void DrawTileProc(TileInfo *ti)
 Tile callback function signature for drawing a tile and its contents to the screen. More...
 
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. More...
 
typedef CommandCost ClearTileProc(TileIndex tile, DoCommandFlag flags)
 
typedef void AddAcceptedCargoProc(TileIndex tile, CargoArray &acceptance, CargoTypes &always_accepted)
 Tile callback function signature for obtaining cargo acceptance of a tile. More...
 
typedef void GetTileDescProc(TileIndex tile, TileDesc *td)
 Tile callback function signature for obtaining a tile description. More...
 
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. More...
 
typedef void AddProducedCargoProc(TileIndex tile, CargoArray &produced)
 Tile callback function signature for obtaining the produced cargo of a tile. More...
 
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 VehicleEnterTileStatus VehicleEnterTileProc(Vehicle *v, TileIndex tile, int x, int y)
 
typedef Foundation GetFoundationProc(TileIndex tile, Slope tileh)
 
typedef CommandCost TerraformTileProc(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new)
 Tile callback function signature of the terraforming callback. More...
 

Enumerations

enum  VehicleEnterTileStatus {
  VETS_ENTERED_STATION = 1 , VETS_ENTERED_WORMHOLE = 2 , VETS_CANNOT_ENTER = 3 , VETS_STATION_ID_OFFSET = 8 ,
  VETS_STATION_MASK = 0xFFFF << VETS_STATION_ID_OFFSET , VETSB_CONTINUE = 0 , VETSB_ENTERED_STATION = 1 << VETS_ENTERED_STATION , VETSB_ENTERED_WORMHOLE = 1 << VETS_ENTERED_WORMHOLE ,
  VETSB_CANNOT_ENTER = 1 << VETS_CANNOT_ENTER
}
 The returned bits of VehicleEnterTile. More...
 

Functions

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

Variables

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

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 98 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 127 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 76 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 89 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 105 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 120 of file tile_cmd.h.

◆ TerraformTileProc

typedef CommandCost TerraformTileProc(TileIndex tile, DoCommandFlag 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 DC_EXEC 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 (DC_EXEC, DC_QUERY_COST, 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 152 of file tile_cmd.h.

◆ VehicleEnterTileProc

typedef VehicleEnterTileStatus VehicleEnterTileProc(Vehicle *v, TileIndex tile, int x, int y)
See also
VehicleEnterTileStatus to see what the return values mean

Definition at line 134 of file tile_cmd.h.

Enumeration Type Documentation

◆ VehicleEnterTileStatus

The returned bits of VehicleEnterTile.

Enumerator
VETS_ENTERED_STATION 

The vehicle entered a station.

VETS_ENTERED_WORMHOLE 

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

VETS_CANNOT_ENTER 

The vehicle cannot enter the tile.

VETS_STATION_ID_OFFSET 

Shift the VehicleEnterTileStatus this many bits to the right to get the station ID when VETS_ENTERED_STATION is set.

VETSB_CONTINUE 

Bit sets of the above specified bits.

The vehicle can continue normally

VETSB_ENTERED_STATION 

The vehicle entered a station.

VETSB_ENTERED_WORMHOLE 

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

VETSB_CANNOT_ENTER 

The vehicle cannot enter the tile.

Definition at line 21 of file tile_cmd.h.

Function Documentation

◆ 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().

◆ 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 CheckRoadBlockedForOvertaking(), CYapfFollowShipT< Types >::CheckShipReverse(), DisasterTick_Submarine(), FixOwnerOfRailTrack(), GenericPlaceSignals(), GetTrackdirBitsForRoad(), MaskWireBits(), RoadFindPathToDest(), RoadVehicle::TileMayHaveSlopedTrack(), TrainController(), TryPathReserve(), TryReserveRailTrack(), UnreserveRailTrack(), and UpdateSignalsInBuffer().

◆ VehicleEnterTile()

VehicleEnterTileStatus 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
VehicleEnterTileStatus to see what the bits in the return value mean.

Definition at line 1838 of file vehicle.cpp.

Referenced by TrainController(), and UpdateStatusAfterSwap().

Variable Documentation

◆ _tile_type_procs

const TileTypeProcs* const _tile_type_procs[16]
extern

Tile callback functions for each type of tile.

See also
TileType

Definition at line 65 of file landscape.cpp.

Referenced by ChangeTileOwner(), GetFoundationSlope(), and GetTileTrackStatus().