OpenTTD Source 20260311-master-g511d3794ce
rail_cmd.h File Reference

Command definitions for rail. More...

#include "command_type.h"
#include "track_type.h"
#include "direction_type.h"
#include "rail_type.h"
#include "signal_type.h"

Go to the source code of this file.

Functions

CommandCost CmdBuildRailroadTrack (DoCommandFlags 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 (DoCommandFlags flags, TileIndex end_tile, TileIndex start_tile, Track track)
 Build rail on a stretch of track.
CommandCost CmdBuildSingleRail (DoCommandFlags flags, TileIndex tile, RailType railtype, Track track, bool auto_remove_signals)
 Build a single piece of rail.
CommandCost CmdRemoveSingleRail (DoCommandFlags flags, TileIndex tile, Track track)
 Remove a single piece of track.
CommandCost CmdBuildTrainDepot (DoCommandFlags flags, TileIndex tile, RailType railtype, DiagDirection dir)
 Build a train depot.
CommandCost CmdBuildSingleSignal (DoCommandFlags 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 (DoCommandFlags flags, TileIndex tile, Track track)
 Remove signals.
CommandCost CmdConvertRail (DoCommandFlags flags, TileIndex tile, TileIndex area_start, RailType totype, bool diagonal)
 Convert one rail type to the other.
CommandCost CmdBuildSignalTrack (DoCommandFlags 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 (DoCommandFlags 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 145 of file rail_gui.cpp.

◆ CmdBuildRailroadTrack()

CommandCost CmdBuildRailroadTrack ( DoCommandFlags 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
Returns
The cost of this operation or an error.
See also
CmdRailTrackHelper

Definition at line 932 of file rail_cmd.cpp.

References CmdRailTrackHelper().

◆ CmdBuildSignalTrack()

CommandCost CmdBuildSignalTrack ( DoCommandFlags 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 1443 of file rail_cmd.cpp.

References CmdSignalTrackHelper().

◆ CmdBuildSingleRail()

CommandCost CmdBuildSingleRail ( DoCommandFlags 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 425 of file rail_cmd.cpp.

References _current_company, _price, _settings_game, CommandCost::AddCost(), AddTrackToSignalBuffer(), AXIS_X, AXIS_Y, Barren, CheckForDockingTile(), CheckOwnership(), CheckRailSlope(), CheckTileOwnership(), CheckTrackCombination(), ClearRough, ClearWater, CMD_ERROR, CountBits(), DirtyCompanyInfrastructureWindows(), DRD_NONE, EnsureNoTrainOnTrack(), EnsureNoVehicleOnGround(), Execute, EXPENSES_CONSTRUCTION, CommandCost::Failed(), CommandCost::GetCost(), GetCrossingRailBits(), GetCrossingRoadAxis(), GetDisallowedRoadDirections(), GetRailType(), GetRoadBits(), GetRoadOwner(), GetRoadTypeRoad(), GetRoadTypeTram(), GetTileOwner(), GetTileSlope(), GetTileType(), GetTownIndex(), GetTrackBits(), HalfTileWater, HasBit(), HasExactlyOneBit(), HasPowerOnRail(), HasRoadWorks(), HasSignalOnTrack(), HasSignals(), HasTrack(), INVALID_ROADTYPE, IsCompatibleRail(), IsLevelCrossing(), IsNormalRoad(), IsPlainRail(), IsPossibleDockingTile(), IsSlopeWithOneCornerRaised(), IsTileType(), LEVELCROSSING_TRACKBIT_FACTOR, MakeRailNormal(), MakeRoadCrossing(), MarkDirtyAdjacentLevelCrossingTiles(), MarkTileDirtyByTile(), OWNER_DEITY, RailBuildCost(), RailNoLevelCrossings(), Railway, Road, ROAD_NONE, ROAD_X, ROAD_Y, RoadBuildCost(), RoadNoLevelCrossing(), RTT_ROAD, RTT_TRAM, SetRailGroundType(), SetTrackBits(), CommandCost::Succeeded(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), TRACK_BEGIN, TRACK_BIT_NONE, TRACK_END, TRACK_X, TRACK_Y, TracksOverlap(), TrackToTrackBits(), UpdateLevelCrossing(), VALID_LEVEL_CROSSING_SLOPES, ValParamRailType(), Water, and YapfNotifyTrackLayoutChange().

◆ CmdBuildSingleSignal()

CommandCost CmdBuildSingleSignal ( DoCommandFlags 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

Definition at line 1046 of file rail_cmd.cpp.

References _current_company, _price, _settings_game, AddTrackToSignalBuffer(), BuildSignals, CheckTileOwnership(), ClearSignals, CMD_ERROR, CountBits(), Vehicle::cur_speed, Vehicle::current_order, CycleSignalSide(), DirtyCompanyInfrastructureWindows(), EnsureNoVehicleOnGround(), Execute, EXPENSES_CONSTRUCTION, CommandCost::Failed(), FreeTrainTrackReservation(), GetPresentSignals(), GetRailReservationTrackBits(), GetSignalStates(), GetSignalType(), GetSignalVariant(), GetTileOwner(), GetTrackBits(), GetTrainForReservation(), Train::GetVehicleTrackdir(), HasBit(), HasReservedTracks(), HasSignalOnTrack(), HasSignals(), HasTrack(), IsPbsSignal(), IsPlainRailTile(), IsSafeWaitingPosition(), Order::IsType(), KillFirstBit(), MarkTileDirtyByTile(), SetHasSignals(), SetPresentSignals(), SetSignalStates(), SetSignalType(), SetSignalVariant(), SIG_ELECTRIC, SIG_SEMAPHORE, SignalOnTrack(), Stopped, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), Vehicle::tile, Train::track, TRACK_BIT_DEPOT, TracksOverlap(), TrackToTrackBits(), TryPathReserve(), Vehicle::vehstatus, and YapfNotifyTrackLayoutChange().

◆ CmdBuildTrainDepot()

◆ CmdConvertRail()

CommandCost CmdConvertRail ( DoCommandFlags 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 1536 of file rail_cmd.cpp.

References _settings_game, CommandCost::AddCost(), CCF_TRACK, CheckTileOwnership(), CMD_ERROR, CountBits(), TileIterator::Create(), Depot, DiagDirToDiagTrack(), DirtyCompanyInfrastructureWindows(), EnsureNoTrainOnTrackBits(), EnsureNoVehicleOnGround(), Execute, EXPENSES_CONSTRUCTION, CommandCost::Failed(), FreeTrainTrackReservation(), SpecializedVehicle< Train, Type >::From(), GetCrossingRailTrack(), GetOtherTunnelBridgeEnd(), GetRailDepotTrack(), GetRailStationTrack(), GetRailTileType(), GetRailType(), GetReservedTrackbits(), GetTileOwner(), GetTileType(), GetTrackBits(), GetTrainForReservation(), GetTunnelBridgeDirection(), GetTunnelBridgeLength(), GetTunnelBridgeTransportType(), HasPowerOnRail(), HasStationRail(), HasTunnelBridgeReservation(), include(), Company::infrastructure, INVALID_TILE, INVALID_TRACK, InvalidateWindowData(), IsBridge(), IsCompatibleRail(), IsLevelCrossing(), IsLevelCrossingTile(), IsPlainRailTile(), IsRailStationTile(), IsStationTileBlocked(), LEVELCROSSING_TRACKBIT_FACTOR, CommandCost::MakeError(), MarkBridgeDirty(), MarkTileDirtyByTile(), CompanyInfrastructure::rail, RailConvertCost(), RailNoLevelCrossings(), RAILTYPE_ELECTRIC, RAILTYPE_RAIL, Train::railtypes, Railway, RemoveFirstTrack(), Road, SetRailType(), Map::Size(), Station, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), TRACK_BIT_NONE, TracksOverlap(), TRANSPORT_RAIL, TryPathReserve(), TunnelBridge, TUNNELBRIDGE_TRACKBIT_FACTOR, TunnelBridgeIsFree(), ValParamRailType(), VEH_TRAIN, WC_BUILD_VEHICLE, WC_VEHICLE_DEPOT, and YapfNotifyTrackLayoutChange().

◆ CmdRemoveRailroadTrack()

CommandCost CmdRemoveRailroadTrack ( DoCommandFlags 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 ( DoCommandFlags 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 1521 of file rail_cmd.cpp.

References CmdSignalTrackHelper(), SIG_ELECTRIC, and SIGTYPE_BLOCK.

◆ CmdRemoveSingleRail()

CommandCost CmdRemoveSingleRail ( DoCommandFlags flags,
TileIndex tile,
Track track )

◆ CmdRemoveSingleSignal()

Variable Documentation

◆ CcBuildRailTunnel

CommandCallback CcBuildRailTunnel

Definition at line 43 of file rail_cmd.h.

◆ CcPlaySound_CONSTRUCTION_RAIL

CommandCallback CcPlaySound_CONSTRUCTION_RAIL

Definition at line 41 of file rail_cmd.h.

◆ CcStation

CommandCallback CcStation

Definition at line 42 of file rail_cmd.h.