OpenTTD Source 20241224-master-gf74b0cf984
rail_cmd.h File Reference

Command definitions for rail. More...

#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.
 
CommandCost CmdRemoveRailroadTrack (DoCommandFlag flags, TileIndex end_tile, TileIndex start_tile, Track track)
 Build rail on a stretch of track.
 
CommandCost CmdBuildSingleRail (DoCommandFlag flags, TileIndex tile, RailType railtype, Track track, bool auto_remove_signals)
 Build a single piece of rail.
 
CommandCost CmdRemoveSingleRail (DoCommandFlag flags, TileIndex tile, Track track)
 Remove a single piece of track.
 
CommandCost CmdBuildTrainDepot (DoCommandFlag flags, TileIndex tile, RailType railtype, DiagDirection dir)
 Build a train depot.
 
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, uint8_t signals_copy)
 Build signals, alternate between double/single, signal/semaphore, pre/exit/combo-signals, and what-else not.
 
CommandCost CmdRemoveSingleSignal (DoCommandFlag flags, TileIndex tile, Track track)
 Remove signals.
 
CommandCost CmdConvertRail (DoCommandFlag flags, TileIndex tile, TileIndex area_start, RailType totype, bool diagonal)
 Convert one rail type to the other.
 
CommandCost CmdBuildSignalTrack (DoCommandFlag flags, TileIndex tile, TileIndex end_tile, Track track, SignalType sigtype, SignalVariant sigvar, bool mode, bool autofill, bool minimise_gaps, uint8_t signal_density)
 Build signals on a stretch of track.
 
CommandCost CmdRemoveSignalTrack (DoCommandFlag flags, TileIndex tile, TileIndex end_tile, Track track, bool autofill)
 Remove signals on a stretch of track.
 
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

◆ CcRailDepot()

void CcRailDepot ( Commands  cmd,
const CommandCost result,
TileIndex  tile,
RailType  rt,
DiagDirection  dir 
)

Definition at line 140 of file rail_gui.cpp.

◆ 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
flagsoperation to perform
end_tileend tile of drag
start_tilestart tile of drag
railtyperailroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev), only used for building
tracktrack-orientation
auto_remove_signalsfalse = build up to an obstacle, true = fail if an obstacle is found (used for AIs).
fail_on_obstaclefalse = 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,
uint8_t  signal_density 
)

Build signals on a stretch of track.

Stub for the unified signal builder/remover

Parameters
flagsoperation to perform
tilestart tile of drag
end_tileend tile of drag
tracktrack-orientation
sigtypedefault signal type
sigvarsignal variant to build
modetrue = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle)
autofillfill beyond selected stretch?
minimise_gapsfalse = keep fixed distance, true = minimise gaps between signals
signal_densityuser 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
flagsoperation to perform
tiletile to build on
railtyperailtype of being built piece (normal, mono, maglev)
tracktrack-orientation
auto_remove_signalsfalse = 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 _current_company, _settings_game, CommandCost::AddCost(), AddTrackToSignalBuffer(), AXIS_X, AXIS_Y, CheckForDockingTile(), CheckOwnership(), CheckRailSlope(), CheckTileOwnership(), CheckTrackCombination(), CMD_ERROR, GameSettings::construction, CountBits(), ConstructionSettings::crossing_with_competitor, DC_EXEC, DirtyCompanyInfrastructureWindows(), DRD_NONE, EnsureNoTrainOnTrack(), EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), GetCrossingRailBits(), GetCrossingRoadAxis(), GetDisallowedRoadDirections(), GetRailType(), GetRoadBits(), GetRoadOwner(), GetTileOwner(), GetTileSlope(), GetTileType(), GetTownIndex(), GetTrackBits(), HasBit(), HasExactlyOneBit(), HasPowerOnRail(), HasRoadWorks(), HasSignalOnTrack(), HasSignals(), HasTrack(), INVALID_ROADTYPE, IsCompatibleRail(), IsLevelCrossing(), IsNormalRoad(), IsPlainRail(), IsSlopeWithOneCornerRaised(), IsTileType(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), LEVELCROSSING_TRACKBIT_FACTOR, MakeRoadCrossing(), MarkDirtyAdjacentLevelCrossingTiles(), MarkTileDirtyByTile(), MP_RAILWAY, MP_ROAD, MP_WATER, OWNER_DEITY, RAIL_GROUND_BARREN, RAIL_GROUND_WATER, RailBuildCost(), RailNoLevelCrossings(), ROAD_NONE, ROAD_X, ROAD_Y, RoadBuildCost(), RoadNoLevelCrossing(), SetTrackBits(), CommandCost::Succeeded(), TRACK_BEGIN, TRACK_BIT_NONE, TRACK_END, TRACK_X, TRACK_Y, TracksOverlap(), TrackToTrackBits(), UpdateLevelCrossing(), VALID_LEVEL_CROSSING_SLOPES, ValParamRailType(), and YapfNotifyTrackLayoutChange().

◆ 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,
uint8_t  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
flagsoperation to perform
tiletile where to build the signals
tracktrack-orientation
sigtypetype of the signal
sigvarvariant of signal type (normal/semaphore)
ctrl_pressedtrue = override signal/semaphore, or pre/exit/combo signal or toggle variant (CTRL-toggle)
convert_signalconvert the present signal type and variant
cycle_startstart cycle from this signal type
cycle_stopwrap around after this signal type
num_dir_cyclecycle the signal direction this many times
skip_existing_signalstrue = don't modify an existing signal but don't fail either, false = always set new signal type
signals_copyused 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.

References _current_company, _settings_game, AddTrackToSignalBuffer(), CheckTileOwnership(), CMD_ERROR, CountBits(), Vehicle::cur_speed, Vehicle::current_order, DC_EXEC, DirtyCompanyInfrastructureWindows(), EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), PathfinderSettings::forbid_90_deg, FreeTrainTrackReservation(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), GetPresentSignals(), GetRailReservationTrackBits(), GetSignalStates(), GetTileOwner(), GetTrackBits(), GetTrainForReservation(), Train::GetVehicleTrackdir(), HasBit(), HasReservedTracks(), HasSignalOnTrack(), HasSignals(), HasTrack(), IsPlainRailTile(), IsSafeWaitingPosition(), Order::IsType(), KillFirstBit(), MarkTileDirtyByTile(), GameSettings::pf, SetHasSignals(), SetPresentSignals(), SetSignalStates(), SIG_ELECTRIC, SIG_SEMAPHORE, SignalOnTrack(), Vehicle::tile, TRACK_BIT_DEPOT, TracksOverlap(), TrackToTrackBits(), TryPathReserve(), Vehicle::vehstatus, VS_STOPPED, and YapfNotifyTrackLayoutChange().

◆ CmdBuildTrainDepot()

◆ 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
flagsoperation to perform
tileend tile of rail conversion drag
area_startstart tile of drag
totypenew railtype to convert to.
diagonalbuild 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
flagsoperation to perform
end_tileend tile of drag
start_tilestart tile of drag
tracktrack-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
flagsoperation to perform
tilestart tile of drag
end_tileend tile of drag
tracktrack-orientation
autofillfill 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
flagsoperation to perform
tiletile to remove track from
trackrail orientation
Returns
the cost of this operation or an error

Definition at line 615 of file rail_cmd.cpp.

References _current_company, CommandCost::AddCost(), AddTrackToSignalBuffer(), CheckTileOwnership(), CMD_ERROR, CountBits(), DC_BANKRUPT, DC_EXEC, DeleteNewGRFInspectWindow(), DirtyCompanyInfrastructureWindows(), EnsureNoTrainOnTrack(), EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), FreeTrainTrackReservation(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), GetCrossingRailBits(), GetCrossingRoadAxis(), GetCrossingRoadBits(), GetRailReservationTrackBits(), GetRailType(), GetRoadOwner(), GetTileOwner(), GetTileSlope(), GetTileType(), GetTownIndex(), GetTrackBits(), GetTrainForReservation(), HasReservedTracks(), HasSignalOnTrack(), INVALID_OWNER, IsDockingTile(), IsLevelCrossing(), IsPlainRail(), IsSlopeWithOneCornerRaised(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), LEVELCROSSING_TRACKBIT_FACTOR, MakeRoadNormal(), MakeShore(), MarkTileDirtyByTile(), MP_RAILWAY, MP_ROAD, OWNER_WATER, RAIL_GROUND_WATER, RailClearCost(), SetDockingTile(), SetTrackBits(), SetTrackReservation(), TRACK_BIT_X, TRACK_BIT_Y, TRACK_X, TRACK_Y, TracksOverlap(), TrackToTrackBits(), TryPathReserve(), UpdateAdjacentLevelCrossingTilesOnLevelCrossingRemoval(), and YapfNotifyTrackLayoutChange().

◆ CmdRemoveSingleSignal()

Variable Documentation

◆ CcBuildRailTunnel

CommandCallback CcBuildRailTunnel

Definition at line 42 of file rail_cmd.h.

◆ CcPlaySound_CONSTRUCTION_RAIL

CommandCallback CcPlaySound_CONSTRUCTION_RAIL

Definition at line 40 of file rail_cmd.h.

◆ CcStation

CommandCallback CcStation

Definition at line 41 of file rail_cmd.h.