OpenTTD Source
20241108-master-g80f628063a
|
Handling of rail tiles. More...
#include "stdafx.h"
#include "viewport_func.h"
#include "command_func.h"
#include "depot_base.h"
#include "pathfinder/yapf/yapf_cache.h"
#include "newgrf_debug.h"
#include "newgrf_railtype.h"
#include "train.h"
#include "autoslope.h"
#include "water.h"
#include "tunnelbridge_map.h"
#include "vehicle_func.h"
#include "sound_func.h"
#include "tunnelbridge.h"
#include "elrail_func.h"
#include "town.h"
#include "pbs.h"
#include "company_base.h"
#include "core/backup_type.hpp"
#include "core/container_func.hpp"
#include "timer/timer_game_calendar.h"
#include "strings_func.h"
#include "company_gui.h"
#include "object_map.h"
#include "rail_cmd.h"
#include "landscape_cmd.h"
#include "table/strings.h"
#include "table/railtypes.h"
#include "table/track_land.h"
#include "safeguards.h"
Go to the source code of this file.
Data Structures | |
struct | FenceOffset |
Offsets for drawing fences. More... | |
Typedefs | |
typedef std::vector< Train * > | TrainList |
Helper type for lists/vectors of trains. | |
Enumerations | |
enum | SignalOffsets { SIGNAL_TO_SOUTHWEST , SIGNAL_TO_NORTHEAST , SIGNAL_TO_SOUTHEAST , SIGNAL_TO_NORTHWEST , SIGNAL_TO_EAST , SIGNAL_TO_WEST , SIGNAL_TO_SOUTH , SIGNAL_TO_NORTH } |
Enum holding the signal offset in the sprite sheet according to the side it is representing. | |
Functions | |
void | ResetRailTypes () |
Reset all rail type information to its default values. | |
void | ResolveRailTypeGUISprites (RailTypeInfo *rti) |
static bool | CompareRailTypes (const RailType &first, const RailType &second) |
Compare railtypes based on their sorting order. More... | |
void | InitRailTypes () |
Resolve sprites of custom rail types. | |
RailType | AllocateRailType (RailTypeLabel label) |
Allocate a new rail type label. | |
static CommandCost | EnsureNoTrainOnTrack (TileIndex tile, Track track) |
Tests if a vehicle interacts with the specified track. More... | |
static CommandCost | CheckTrackCombination (TileIndex tile, TrackBits to_build) |
Check that the new track bits may be built. More... | |
Foundation | GetRailFoundation (Slope tileh, TrackBits bits) |
Checks if a track combination is valid on a specific slope and returns the needed foundation. More... | |
static CommandCost | CheckRailSlope (Slope tileh, TrackBits rail_bits, TrackBits existing, TileIndex tile) |
Tests if a track can be build on a tile. More... | |
static bool | ValParamTrackOrientation (Track track) |
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... | |
bool | FloodHalftile (TileIndex t) |
Called from water_cmd if a non-flat rail-tile gets flooded and should be converted to shore. More... | |
static CommandCost | ValidateAutoDrag (Trackdir *trackdir, TileIndex start, TileIndex end) |
static CommandCost | CmdRailTrackHelper (DoCommandFlag flags, TileIndex tile, TileIndex end_tile, RailType railtype, Track track, bool remove, bool auto_remove_signals, bool fail_on_obstacle) |
Build or remove a stretch of railroad tracks. More... | |
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 | 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, uint8_t signals_copy) |
Build signals, alternate between double/single, signal/semaphore, pre/exit/combo-signals, and what-else not. More... | |
static bool | AdvanceSignalAutoFill (TileIndex &tile, Trackdir &trackdir, bool remove) |
static CommandCost | CmdSignalTrackHelper (DoCommandFlag flags, TileIndex tile, TileIndex end_tile, Track track, SignalType sigtype, SignalVariant sigvar, bool mode, bool remove, bool autofill, bool minimise_gaps, int signal_density) |
Build many signals by dragging; AutoSignals. More... | |
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. More... | |
CommandCost | CmdRemoveSingleSignal (DoCommandFlag flags, TileIndex tile, Track track) |
Remove signals. More... | |
CommandCost | CmdRemoveSignalTrack (DoCommandFlag flags, TileIndex tile, TileIndex end_tile, Track track, bool autofill) |
Remove signals on a stretch of track. More... | |
static Vehicle * | UpdateTrainPowerProc (Vehicle *v, void *data) |
Update power of train under which is the railtype being converted. | |
CommandCost | CmdConvertRail (DoCommandFlag flags, TileIndex tile, TileIndex area_start, RailType totype, bool diagonal) |
Convert one rail type to the other. More... | |
static CommandCost | RemoveTrainDepot (TileIndex tile, DoCommandFlag flags) |
static CommandCost | ClearTile_Track (TileIndex tile, DoCommandFlag flags) |
static uint | GetSaveSlopeZ (uint x, uint y, Track track) |
Get surface height in point (x,y) On tiles with halftile foundations move (x,y) to a safe point wrt. More... | |
static void | DrawSingleSignal (TileIndex tile, const RailTypeInfo *rti, Track track, SignalState condition, SignalOffsets image, uint pos) |
static void | DrawTrackFence (const TileInfo *ti, SpriteID base_image, uint num_sprites, RailFenceOffset rfo) |
Draw a track fence. More... | |
static void | DrawTrackFence_NW (const TileInfo *ti, SpriteID base_image, uint num_sprites) |
Draw fence at NW border matching the tile slope. | |
static void | DrawTrackFence_SE (const TileInfo *ti, SpriteID base_image, uint num_sprites) |
Draw fence at SE border matching the tile slope. | |
static void | DrawTrackFence_NE (const TileInfo *ti, SpriteID base_image, uint num_sprites) |
Draw fence at NE border matching the tile slope. | |
static void | DrawTrackFence_SW (const TileInfo *ti, SpriteID base_image, uint num_sprites) |
Draw fence at SW border matching the tile slope. | |
static void | DrawTrackDetails (const TileInfo *ti, const RailTypeInfo *rti) |
Draw track fences. More... | |
static void | DrawTrackSprite (SpriteID sprite, PaletteID pal, const TileInfo *ti, Slope s) |
static void | DrawTrackBitsOverlay (TileInfo *ti, TrackBits track, const RailTypeInfo *rti) |
static void | DrawTrackBits (TileInfo *ti, TrackBits track) |
Draw ground sprite and track bits. More... | |
static void | DrawSignals (TileIndex tile, TrackBits rails, const RailTypeInfo *rti) |
static void | DrawTile_Track (TileInfo *ti) |
void | DrawTrainDepotSprite (int x, int y, int dir, RailType railtype) |
static int | GetSlopePixelZ_Track (TileIndex tile, uint x, uint y, bool) |
static Foundation | GetFoundation_Track (TileIndex tile, Slope tileh) |
static void | TileLoop_Track (TileIndex tile) |
static TrackStatus | GetTileTrackStatus_Track (TileIndex tile, TransportType mode, uint, DiagDirection side) |
static bool | ClickTile_Track (TileIndex tile) |
static void | GetTileDesc_Track (TileIndex tile, TileDesc *td) |
static void | ChangeTileOwner_Track (TileIndex tile, Owner old_owner, Owner new_owner) |
int | TicksToLeaveDepot (const Train *v) |
Compute number of ticks when next wagon will leave a depot. More... | |
static VehicleEnterTileStatus | VehicleEnter_Track (Vehicle *u, TileIndex tile, int x, int y) |
Tile callback routine when vehicle enters tile. More... | |
static CommandCost | TestAutoslopeOnRailTile (TileIndex tile, uint flags, int z_old, Slope tileh_old, int z_new, Slope tileh_new, TrackBits rail_bits) |
Tests if autoslope is allowed. More... | |
static Vehicle * | EnsureNoShipProc (Vehicle *v, void *) |
Test-procedure for HasVehicleOnPos to check for a ship. | |
static CommandCost | TerraformTile_Track (TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new) |
Variables | |
RailTypeInfo | _railtypes [RAILTYPE_END] |
std::vector< RailType > | _sorted_railtypes |
RailTypes | _railtypes_hidden_mask |
static const uint8_t | _track_sloped_sprites [14] |
static const TrackBits | _valid_tracks_without_foundation [15] |
Valid TrackBits on a specific (non-steep)-slope without foundation. More... | |
static const TrackBits | _valid_tracks_on_leveled_foundation [15] |
Valid TrackBits on a specific (non-steep)-slope with leveled foundation. More... | |
static const TileIndexDiffC | _trackdelta [] |
static uint32_t | _drawtile_track_palette |
static FenceOffset | _fence_offsets [] |
Offsets for drawing fences. More... | |
static const int | INF = 1000 |
static const SubSprite | _halftile_sub_sprite [4] |
static const uint8_t | _fractcoords_behind [4] = { 0x8F, 0x8, 0x80, 0xF8 } |
static const uint8_t | _fractcoords_enter [4] = { 0x8A, 0x48, 0x84, 0xA8 } |
static const int8_t | _deltacoord_leaveoffset [8] |
const TileTypeProcs | _tile_type_rail_procs |
Handling of rail tiles.
Definition in file rail_cmd.cpp.
|
static |
Tests if a track can be build on a tile.
tileh | Tile slope. |
rail_bits | Tracks to build. |
existing | Tracks already built. |
tile | Tile (used for water test) |
Definition at line 392 of file rail_cmd.cpp.
References _settings_game, _valid_tracks_on_leveled_foundation, ConstructionSettings::build_on_slopes, GameSettings::construction, EXPENSES_CONSTRUCTION, FLOOD_NONE, FOUNDATION_INVALID, FOUNDATION_NONE, GetFloodingBehaviour(), GetRailFoundation(), IsSteepSlope(), and return_cmd_error.
Referenced by TestAutoslopeOnRailTile().
|
static |
Check that the new track bits may be built.
tile | Tile to build on. |
to_build | New track bits. |
Definition at line 241 of file rail_cmd.cpp.
References GetTrackBits(), IsPlainRail(), and return_cmd_error.
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
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 |
Definition at line 932 of file rail_cmd.cpp.
References CmdRailTrackHelper().
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
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 |
Definition at line 1449 of file rail_cmd.cpp.
References CmdSignalTrackHelper().
CommandCost CmdBuildSingleRail | ( | DoCommandFlag | flags, |
TileIndex | tile, | ||
RailType | railtype, | ||
Track | track, | ||
bool | auto_remove_signals | ||
) |
Build a single piece of rail.
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 |
Definition at line 426 of file rail_cmd.cpp.
References EXPENSES_CONSTRUCTION, and ValParamRailType().
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
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 |
Definition at line 1052 of file rail_cmd.cpp.
CommandCost CmdBuildTrainDepot | ( | DoCommandFlag | flags, |
TileIndex | tile, | ||
RailType | railtype, | ||
DiagDirection | dir | ||
) |
Build a train depot.
flags | operation to perform |
tile | position of the train depot |
railtype | rail type |
dir | entrance 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().
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.
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. |
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().
|
static |
Build or remove a stretch of railroad tracks.
flags | operation to perform |
tile | start tile of drag |
end_tile | end tile of drag |
railtype | railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev), only used for building |
track | track-orientation |
remove | remove tracks? |
auto_remove_signals | false = error on signal in the way, true = auto remove signals when in the way, only used for building |
fail_on_obstacle | false = build starting from and up to an obstacle, true = fail if an obstacle is found (used for AIs) |
Definition at line 876 of file rail_cmd.cpp.
References EXPENSES_CONSTRUCTION, and ValParamRailType().
Referenced by CmdBuildRailroadTrack(), and 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
flags | operation to perform |
end_tile | end tile of drag |
start_tile | start tile of drag |
track | track-orientation |
Definition at line 947 of file rail_cmd.cpp.
References CmdRailTrackHelper(), and INVALID_RAILTYPE.
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
flags | operation to perform |
tile | start tile of drag |
end_tile | end tile of drag |
track | track-orientation |
autofill | fill beyond selected stretch? |
Definition at line 1527 of file rail_cmd.cpp.
References CmdSignalTrackHelper(), SIG_ELECTRIC, and SIGTYPE_BLOCK.
CommandCost CmdRemoveSingleRail | ( | DoCommandFlag | flags, |
TileIndex | tile, | ||
Track | track | ||
) |
Remove a single piece of track.
flags | operation to perform |
tile | tile to remove track from |
track | rail orientation |
Definition at line 615 of file rail_cmd.cpp.
References EXPENSES_CONSTRUCTION.
CommandCost CmdRemoveSingleSignal | ( | DoCommandFlag | flags, |
TileIndex | tile, | ||
Track | track | ||
) |
Remove signals.
flags | operation to perform |
tile | coordinates where signal is being deleted from |
track | track-orientation |
Definition at line 1461 of file rail_cmd.cpp.
|
static |
Build many signals by dragging; AutoSignals.
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) |
remove | remove signals? |
autofill | fill beyond selected stretch? |
minimise_gaps | false = keep fixed distance, true = minimise gaps between signals |
signal_density | user defined signals_density |
Definition at line 1258 of file rail_cmd.cpp.
References EXPENSES_CONSTRUCTION, and Map::Size().
Referenced by CmdBuildSignalTrack(), and CmdRemoveSignalTrack().
Compare railtypes based on their sorting order.
first | The railtype to compare to. |
second | The railtype to compare. |
Definition at line 122 of file rail_cmd.cpp.
References GetRailTypeInfo(), and RailTypeInfo::sorting_order.
Draw ground sprite and track bits.
ti | TileInfo |
track | TrackBits to draw |
Definition at line 2237 of file rail_cmd.cpp.
References GetRailType(), GetRailTypeInfo(), and TileInfo::tile.
|
static |
Draw track fences.
ti | Tile drawing information. |
rti | Rail type information. |
Definition at line 2010 of file rail_cmd.cpp.
References GetCustomRailSprite(), IsHalftileSlope(), RTSG_FENCES, TCX_NORMAL, TCX_UPPER_HALFTILE, TileInfo::tile, and TileInfo::tileh.
|
static |
Draw a track fence.
ti | Tile drawing information. |
base_image | First fence sprite. |
num_sprites | Number of fence sprites. |
rfo | Fence to draw. |
Definition at line 1951 of file rail_cmd.cpp.
References _fence_offsets, and TileInfo::z.
Referenced by DrawTrackFence_NE(), DrawTrackFence_NW(), DrawTrackFence_SE(), and DrawTrackFence_SW().
|
static |
Tests if a vehicle interacts with the specified track.
All track bits interact except parallel TRACK_BIT_HORZ or TRACK_BIT_VERT.
tile | The tile. |
track | The track. |
Definition at line 229 of file rail_cmd.cpp.
References EnsureNoTrainOnTrackBits(), and TrackToTrackBits().
bool FloodHalftile | ( | TileIndex | t | ) |
Called from water_cmd if a non-flat rail-tile gets flooded and should be converted to shore.
The function floods the lower halftile, if the tile has a halftile foundation.
t | The tile to flood. |
Definition at line 762 of file rail_cmd.cpp.
References IsPlainRailTile().
Referenced by DoFloodTile().
Foundation GetRailFoundation | ( | Slope | tileh, |
TrackBits | bits | ||
) |
Checks if a track combination is valid on a specific slope and returns the needed foundation.
tileh | Tile slope. |
bits | Trackbits. |
Definition at line 312 of file rail_cmd.cpp.
References _valid_tracks_on_leveled_foundation, _valid_tracks_without_foundation, CornerToTrackBits(), FOUNDATION_INCLINED_X, FOUNDATION_INCLINED_Y, FOUNDATION_INVALID, FOUNDATION_NONE, FOUNDATION_STEEP_BOTH, FOUNDATION_STEEP_LOWER, GetHighestSlopeCorner(), HalftileFoundation(), IsSteepSlope(), TRACK_BIT_LEFT, TRACK_BIT_NONE, TRACK_BIT_X, TRACK_BIT_Y, and TracksOverlap().
Referenced by CheckRailSlope(), and TestAutoslopeOnRailTile().
|
static |
Get surface height in point (x,y) On tiles with halftile foundations move (x,y) to a safe point wrt.
track
Definition at line 1859 of file rail_cmd.cpp.
|
static |
Tests if autoslope is allowed.
tile | The tile. |
flags | Terraform command flags. |
z_old | Old TileZ. |
tileh_old | Old TileSlope. |
z_new | New TileZ. |
tileh_new | New TileSlope. |
rail_bits | Trackbits. |
Definition at line 2994 of file rail_cmd.cpp.
References _settings_game, ApplyFoundationToSlope(), AutoslopeEnabled(), ConstructionSettings::build_on_slopes, CheckRailSlope(), GameSettings::construction, GetRailFoundation(), return_cmd_error, TRACK_BIT_LEFT, and TRACK_BIT_NONE.
int TicksToLeaveDepot | ( | const Train * | v | ) |
Compute number of ticks when next wagon will leave a depot.
Negative means next wagon should have left depot n ticks before.
v | vehicle outside (leaving) the depot |
Definition at line 2916 of file rail_cmd.cpp.
References Train::CalcNextVehicleOffset(), DIAGDIR_NE, GetRailDepotDirection(), Vehicle::tile, and Vehicle::x_pos.
Referenced by AdvanceWagonsAfterSwap(), and CheckTrainsLengths().
|
static |
Tile callback routine when vehicle enters tile.
Definition at line 2934 of file rail_cmd.cpp.
|
static |
Definition at line 2904 of file rail_cmd.cpp.
|
static |
Offsets for drawing fences.
Definition at line 1925 of file rail_cmd.cpp.
Referenced by DrawTrackFence().
|
static |
Definition at line 2060 of file rail_cmd.cpp.
|
extern |
Definition at line 49 of file landscape.cpp.
|
static |
Definition at line 182 of file rail_cmd.cpp.
|
static |
Definition at line 807 of file rail_cmd.cpp.
|
static |
Valid TrackBits on a specific (non-steep)-slope with leveled foundation.
Definition at line 284 of file rail_cmd.cpp.
Referenced by CheckRailSlope(), and GetRailFoundation().
|
static |
Valid TrackBits on a specific (non-steep)-slope without foundation.
Definition at line 262 of file rail_cmd.cpp.
Referenced by GetRailFoundation().