OpenTTD Source: src/rail_cmd.h File Reference

OpenTTD Source 14.0-RC3

Functions | Variables
rail_cmd.h File Reference
`#include "command_type.h"`
`#include "track_type.h"`
`#include "rail_type.h"`
`#include "signal_type.h"`

Go to the source code of this file.

## Functions
CommandCost | CmdBuildRailroadTrack (DoCommandFlag flags, TileIndex end_tile, TileIndex start_tile, RailType railtype, Track track, bool auto_remove_signals, bool fail_on_obstacle)
| Build rail on a stretch of track. More...
CommandCost | CmdRemoveRailroadTrack (DoCommandFlag flags, TileIndex end_tile, TileIndex start_tile, Track track)
| Build rail on a stretch of track. More...
CommandCost | CmdBuildSingleRail (DoCommandFlag flags, TileIndex tile, RailType railtype, Track track, bool auto_remove_signals)
| Build a single piece of rail. More...
CommandCost | CmdRemoveSingleRail (DoCommandFlag flags, TileIndex tile, Track track)
| Remove a single piece of track. More...
CommandCost | CmdBuildTrainDepot (DoCommandFlag flags, TileIndex tile, RailType railtype, DiagDirection dir)
| Build a train depot. More...
CommandCost | CmdBuildSingleSignal (DoCommandFlag flags, TileIndex tile, Track track, SignalType sigtype, SignalVariant sigvar, bool convert_signal, bool skip_existing_signals, bool ctrl_pressed, SignalType cycle_start, SignalType cycle_stop, uint8_t num_dir_cycle, byte signals_copy)
| Build signals, alternate between double/single, signal/semaphore, pre/exit/combo-signals, and what-else not. More...
CommandCost | CmdRemoveSingleSignal (DoCommandFlag flags, TileIndex tile, Track track)
| Remove signals. More...
CommandCost | CmdConvertRail (DoCommandFlag flags, TileIndex tile, TileIndex area_start, RailType totype, bool diagonal)
| Convert one rail type to the other. More...
CommandCost | CmdBuildSignalTrack (DoCommandFlag flags, TileIndex tile, TileIndex end_tile, Track track, SignalType sigtype, SignalVariant sigvar, bool mode, bool autofill, bool minimise_gaps, byte signal_density)
| Build signals on a stretch of track. More...
CommandCost | CmdRemoveSignalTrack (DoCommandFlag flags, TileIndex tile, TileIndex end_tile, Track track, bool autofill)
| Remove signals on a stretch of track. More...
void | CcRailDepot (Commands cmd, const CommandCost &result, TileIndex tile, RailType rt, DiagDirection dir)

## Variables
CommandCallback | CcPlaySound_CONSTRUCTION_RAIL
CommandCallback | CcStation
CommandCallback | CcBuildRailTunnel

## Detailed Description

Command definitions for rail.

Definition in file rail_cmd.h.

## Function Documentation

## ◆ CmdBuildRailroadTrack()

CommandCost CmdBuildRailroadTrack | ( | DoCommandFlag | flags,
|  | TileIndex | end_tile,
|  | TileIndex | start_tile,
|  | RailType | railtype,
|  | Track | track,
|  | bool | auto_remove_signals,
|  | bool | fail_on_obstacle
| ) |  |

Build rail on a stretch of track.

Stub for the unified rail builder/remover

Parameters

  flags | operation to perform
  end_tile | end tile of drag
  start_tile | start tile of drag
  railtype | railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev), only used for building
  track | track-orientation
  auto_remove_signals | false = build up to an obstacle, true = fail if an obstacle is found (used for AIs).
  fail_on_obstacle | false = error on signal in the way, true = auto remove signals when in the way

See also
  CmdRailTrackHelper

Definition at line 932 of file rail_cmd.cpp.

References CmdRailTrackHelper().

## ◆ CmdBuildSignalTrack()

CommandCost CmdBuildSignalTrack | ( | DoCommandFlag | flags,
|  | TileIndex | tile,
|  | TileIndex | end_tile,
|  | Track | track,
|  | SignalType | sigtype,
|  | SignalVariant | sigvar,
|  | bool | mode,
|  | bool | autofill,
|  | bool | minimise_gaps,
|  | byte | signal_density
| ) |  |

Build signals on a stretch of track.

Stub for the unified signal builder/remover

Parameters

  flags | operation to perform
  tile | start tile of drag
  end_tile | end tile of drag
  track | track-orientation
  sigtype | default signal type
  sigvar | signal variant to build
  mode | true = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle)
  autofill | fill beyond selected stretch?
  minimise_gaps | false = keep fixed distance, true = minimise gaps between signals
  signal_density | user defined signals_density

Returns
  the cost of this operation or an error

See also
  CmdSignalTrackHelper

Definition at line 1449 of file rail_cmd.cpp.

References CmdSignalTrackHelper().

## ◆ CmdBuildSingleRail()

CommandCost CmdBuildSingleRail | ( | DoCommandFlag | flags,
|  | TileIndex | tile,
|  | RailType | railtype,
|  | Track | track,
|  | bool | auto_remove_signals
| ) |  |

Build a single piece of rail.

Parameters

  flags | operation to perform
  tile | tile to build on
  railtype | railtype of being built piece (normal, mono, maglev)
  track | track-orientation
  auto_remove_signals | false = error on signal in the way, true = auto remove signals when in the way

Returns
  the cost of this operation or an error

Definition at line 426 of file rail_cmd.cpp.

References EXPENSES_CONSTRUCTION, and ValParamRailType().

## ◆ CmdBuildSingleSignal()

CommandCost CmdBuildSingleSignal | ( | DoCommandFlag | flags,
|  | TileIndex | tile,
|  | Track | track,
|  | SignalType | sigtype,
|  | SignalVariant | sigvar,
|  | bool | convert_signal,
|  | bool | skip_existing_signals,
|  | bool | ctrl_pressed,
|  | SignalType | cycle_start,
|  | SignalType | cycle_stop,
|  | uint8_t | num_dir_cycle,
|  | byte | signals_copy
| ) |  |

Build signals, alternate between double/single, signal/semaphore, pre/exit/combo-signals, and what-else not.

If the rail piece does not have any signals, signal cycling is ignored

Parameters

  flags | operation to perform
  tile | tile where to build the signals
  track | track-orientation
  sigtype | type of the signal
  sigvar | variant of signal type (normal/semaphore)
  ctrl_pressed | true = override signal/semaphore, or pre/exit/combo signal or toggle variant (CTRL-toggle)
  convert_signal | convert the present signal type and variant
  cycle_start | start cycle from this signal type
  cycle_stop | wrap around after this signal type
  num_dir_cycle | cycle the signal direction this many times
  skip_existing_signals | true = don't modify an existing signal but don't fail either, false = always set new signal type
  signals_copy | used for CmdBuildManySignals() to copy direction of first signal

Returns
  the cost of this operation or an error

Todo:
  p2 should be replaced by two bits for "along" and "against" the track.

Definition at line 1052 of file rail_cmd.cpp.

## ◆ CmdBuildTrainDepot()

CommandCost CmdBuildTrainDepot | ( | DoCommandFlag | flags,
|  | TileIndex | tile,
|  | RailType | railtype,
|  | DiagDirection | dir
| ) |  |

Build a train depot.

Parameters

  flags | operation to perform
  tile | position of the train depot
  railtype | rail type
  dir | entrance direction

Returns
  the cost of this operation or an error

Todo:
  When checking for the tile slope, distinguish between "Flat land required" and "land sloped in wrong direction"

Definition at line 963 of file rail_cmd.cpp.

References _settings_game, CommandCost::AddCost(), ConstructionSettings::build_on_slopes, CanBuildDepotByTileh(), CMD_ERROR, GameSettings::construction, EXPENSES_CONSTRUCTION, GetTileSlope(), IsValidDiagDirection(), return_cmd_error, SLOPE_FLAT, and ValParamRailType().

## ◆ CmdConvertRail()

CommandCost CmdConvertRail | ( | DoCommandFlag | flags,
|  | TileIndex | tile,
|  | TileIndex | area_start,
|  | RailType | totype,
|  | bool | diagonal
| ) |  |

Convert one rail type to the other.

You can convert normal rail to monorail/maglev easily or vice-versa.

Parameters

  flags | operation to perform
  tile | end tile of rail conversion drag
  area_start | start tile of drag
  totype | new railtype to convert to.
  diagonal | build diagonally or not.

Returns
  the cost of this operation or an error

Definition at line 1553 of file rail_cmd.cpp.

References _settings_game, CommandCost::AddCost(), CCF_TRACK, CheckTileOwnership(), CMD_ERROR, CountBits(), TileIterator::Create(), DC_EXEC, DiagDirToDiagTrack(), DirtyCompanyInfrastructureWindows(), VehicleSettings::disable_elrails, EnsureNoTrainOnTrackBits(), EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), FindVehicleOnPos(), FreeTrainTrackReservation(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), GetCrossingRailTrack(), GetOtherTunnelBridgeEnd(), GetRailDepotTrack(), GetRailStationTrack(), GetRailTileType(), GetRailType(), GetReservedTrackbits(), GetTileOwner(), GetTileType(), GetTrackBits(), GetTrainForReservation(), GetTunnelBridgeDirection(), GetTunnelBridgeLength(), GetTunnelBridgeTransportType(), HasPowerOnRail(), HasStationRail(), HasTunnelBridgeReservation(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Company::infrastructure, INVALID_TILE, INVALID_TRACK, InvalidateWindowData(), IsBridge(), IsCompatibleRail(), IsLevelCrossing(), IsLevelCrossingTile(), IsPlainRailTile(), IsRailStationTile(), IsStationTileBlocked(), LEVELCROSSING_TRACKBIT_FACTOR, CommandCost::MakeError(), MarkBridgeDirty(), MarkTileDirtyByTile(), MP_RAILWAY, MP_ROAD, MP_STATION, MP_TUNNELBRIDGE, CompanyInfrastructure::rail, RAIL_TILE_DEPOT, RailConvertCost(), RailNoLevelCrossings(), RAILTYPE_ELECTRIC, RAILTYPE_RAIL, RemoveFirstTrack(), SetRailType(), Map::Size(), TRACK_BIT_NONE, TracksOverlap(), TRANSPORT_RAIL, TryPathReserve(), TUNNELBRIDGE_TRACKBIT_FACTOR, TunnelBridgeIsFree(), UpdateTrainPowerProc(), ValParamRailType(), GameSettings::vehicle, WC_BUILD_VEHICLE, WC_VEHICLE_DEPOT, and YapfNotifyTrackLayoutChange().

## ◆ CmdRemoveRailroadTrack()

CommandCost CmdRemoveRailroadTrack | ( | DoCommandFlag | flags,
|  | TileIndex | end_tile,
|  | TileIndex | start_tile,
|  | Track | track
| ) |  |

Build rail on a stretch of track.

Stub for the unified rail builder/remover

Parameters

  flags | operation to perform
  end_tile | end tile of drag
  start_tile | start tile of drag
  track | track-orientation

Returns
  the cost of this operation or an error

See also
  CmdRailTrackHelper

Definition at line 947 of file rail_cmd.cpp.

References CmdRailTrackHelper(), and INVALID_RAILTYPE.

## ◆ CmdRemoveSignalTrack()

CommandCost CmdRemoveSignalTrack | ( | DoCommandFlag | flags,
|  | TileIndex | tile,
|  | TileIndex | end_tile,
|  | Track | track,
|  | bool | autofill
| ) |  |

Remove signals on a stretch of track.

Stub for the unified signal builder/remover

Parameters

  flags | operation to perform
  tile | start tile of drag
  end_tile | end tile of drag
  track | track-orientation
  autofill | fill beyond selected stretch?

Returns
  the cost of this operation or an error

See also
  CmdSignalTrackHelper

Definition at line 1527 of file rail_cmd.cpp.

References CmdSignalTrackHelper(), SIG_ELECTRIC, and SIGTYPE_BLOCK.

## ◆ CmdRemoveSingleRail()

CommandCost CmdRemoveSingleRail | ( | DoCommandFlag | flags,
|  | TileIndex | tile,
|  | Track | track
| ) |  |

Remove a single piece of track.

Parameters

  flags | operation to perform
  tile | tile to remove track from
  track | rail orientation

Returns
  the cost of this operation or an error

Definition at line 615 of file rail_cmd.cpp.

References EXPENSES_CONSTRUCTION.

## ◆ CmdRemoveSingleSignal()

CommandCost CmdRemoveSingleSignal | ( | DoCommandFlag | flags,
|  | TileIndex | tile,
|  | Track | track
| ) |  |

Remove signals.

Parameters

  flags | operation to perform
  tile | coordinates where signal is being deleted from
  track | track-orientation

Returns
  the cost of this operation or an error

Definition at line 1461 of file rail_cmd.cpp.