Handling of rail tiles. More...
#include "stdafx.h"#include "cmd_helper.h"#include "landscape.h"#include "viewport_func.h"#include "command_func.h"#include "engine_base.h"#include "depot_base.h"#include "pathfinder/yapf/yapf_cache.h"#include "newgrf_engine.h"#include "landscape_type.h"#include "newgrf_railtype.h"#include "newgrf_commons.h"#include "train.h"#include "variables.h"#include "autoslope.h"#include "water.h"#include "tunnelbridge_map.h"#include "window_func.h"#include "vehicle_func.h"#include "sound_func.h"#include "tunnelbridge.h"#include "functions.h"#include "elrail_func.h"#include "town.h"#include "pbs.h"#include "company_base.h"#include "table/strings.h"#include "table/sprites.h"#include "table/railtypes.h"#include "table/track_land.h"Go to the source code of this file.
Defines | |
| #define | M(x) (1 << (x)) |
| #define | MAYBE_DRAW_SIGNAL(x, y, z, t) if (IsSignalPresent(tile, x)) DrawSingleSignal(tile, t, GetSingleSignalState(tile, x), y, z) |
Enumerations | |
| enum | { SIGNAL_TO_SOUTHWEST = 0, SIGNAL_TO_NORTHEAST = 2, SIGNAL_TO_SOUTHEAST = 4, SIGNAL_TO_NORTHWEST = 6, SIGNAL_TO_EAST = 8, SIGNAL_TO_WEST = 10, SIGNAL_TO_SOUTH = 12, SIGNAL_TO_NORTH = 14 } |
Enums holding the offsets from base signal sprite, according to the side it is representing. More... | |
Functions | |
| assert_compile (sizeof(_original_railtypes)<=sizeof(_railtypes)) | |
| void | ResetRailTypes () |
| Initialize rail type information. | |
| void | ResolveRailTypeGUISprites (RailtypeInfo *rti) |
| void | InitRailTypes () |
| Resolve sprites of custom rail types. | |
| RailType | AllocateRailType (RailTypeLabel label) |
| Allocate a new rail type label. | |
| Vehicle * | EnsureNoTrainOnTrackProc (Vehicle *v, void *data) |
| static bool | EnsureNoTrainOnTrack (TileIndex tile, Track track) |
| Tests if a vehicle interacts with the specified track. | |
| static CommandCost | CheckTrackCombination (TileIndex tile, TrackBits to_build, uint flags) |
| Check that the new track bits may be built. | |
| Foundation | GetRailFoundation (Slope tileh, TrackBits bits) |
| Checks if a track combination is valid on a specific slope and returns the needed foundation. | |
| static CommandCost | CheckRailSlope (Slope tileh, TrackBits rail_bits, TrackBits existing, TileIndex tile) |
| Tests if a track can be build on a tile. | |
| static bool | ValParamTrackOrientation (Track track) |
| CommandCost | CmdBuildSingleRail (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Build a single piece of rail. | |
| CommandCost | CmdRemoveSingleRail (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Remove a single piece of track. | |
| bool | FloodHalftile (TileIndex t) |
| Called from water_cmd if a non-flat rail-tile gets flooded and should be converted to shore. | |
| static CommandCost | ValidateAutoDrag (Trackdir *trackdir, TileIndex start, TileIndex end) |
| static CommandCost | CmdRailTrackHelper (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Build a stretch of railroad tracks. | |
| CommandCost | CmdBuildRailroadTrack (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Build rail on a stretch of track. | |
| CommandCost | CmdRemoveRailroadTrack (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Build rail on a stretch of track. | |
| CommandCost | CmdBuildTrainDepot (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Build a train depot. | |
| CommandCost | CmdBuildSingleSignal (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Build signals, alternate between double/single, signal/semaphore, pre/exit/combo-signals, and what-else not. | |
| static bool | CheckSignalAutoFill (TileIndex &tile, Trackdir &trackdir, int &signal_ctr, bool remove) |
| static CommandCost | CmdSignalTrackHelper (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Build many signals by dragging; AutoSignals. | |
| CommandCost | CmdBuildSignalTrack (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Build signals on a stretch of track. | |
| CommandCost | CmdRemoveSingleSignal (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Remove signals. | |
| CommandCost | CmdRemoveSignalTrack (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Remove signals on a stretch of track. | |
| static Vehicle * | UpdateTrainPowerProc (Vehicle *v, void *data) |
| Update power of train under which is the railtype being converted. | |
| CommandCost | CmdConvertRail (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Convert one rail type to the other. | |
| 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. | |
| static void | DrawSingleSignal (TileIndex tile, Track track, byte condition, uint image, uint pos) |
| static void | DrawTrackFence_NW (const TileInfo *ti, SpriteID base_image) |
| static void | DrawTrackFence_SE (const TileInfo *ti, SpriteID base_image) |
| static void | DrawTrackFence_NW_SE (const TileInfo *ti, SpriteID base_image) |
| static void | DrawTrackFence_NE (const TileInfo *ti, SpriteID base_image) |
| static void | DrawTrackFence_SW (const TileInfo *ti, SpriteID base_image) |
| static void | DrawTrackFence_NE_SW (const TileInfo *ti, SpriteID base_image) |
| static void | DrawTrackFence_NS_1 (const TileInfo *ti, SpriteID base_image) |
| Draw fence at eastern side of track. | |
| static void | DrawTrackFence_NS_2 (const TileInfo *ti, SpriteID base_image) |
| Draw fence at western side of track. | |
| static void | DrawTrackFence_WE_1 (const TileInfo *ti, SpriteID base_image) |
| Draw fence at southern side of track. | |
| static void | DrawTrackFence_WE_2 (const TileInfo *ti, SpriteID base_image) |
| Draw fence at northern side of track. | |
| static void | DrawTrackDetails (const TileInfo *ti, const RailtypeInfo *rti) |
| 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. | |
| static void | DrawSignals (TileIndex tile, TrackBits rails) |
| static void | DrawTile_Track (TileInfo *ti) |
| void | DrawTrainDepotSprite (int x, int y, int dir, RailType railtype) |
| static uint | GetSlopeZ_Track (TileIndex tile, uint x, uint y) |
| static Foundation | GetFoundation_Track (TileIndex tile, Slope tileh) |
| static void | TileLoop_Track (TileIndex tile) |
| static TrackStatus | GetTileTrackStatus_Track (TileIndex tile, TransportType mode, uint sub_mode, 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. | |
| static VehicleEnterTileStatus | VehicleEnter_Track (Vehicle *u, TileIndex tile, int x, int y) |
| Tile callback routine when vehicle enters tile. | |
| static CommandCost | TestAutoslopeOnRailTile (TileIndex tile, uint flags, uint z_old, Slope tileh_old, uint z_new, Slope tileh_new, TrackBits rail_bits) |
| Tests if autoslope is allowed. | |
| static CommandCost | TerraformTile_Track (TileIndex tile, DoCommandFlag flags, uint z_new, Slope tileh_new) |
Variables | |
| RailtypeInfo | _railtypes [RAILTYPE_END] |
| static const byte | _track_sloped_sprites [14] |
| static const TrackBits | _valid_tracks_without_foundation [15] |
| Valid TrackBits on a specific (non-steep)-slope without foundation. | |
| static const TrackBits | _valid_tracks_on_leveled_foundation [15] |
| Valid TrackBits on a specific (non-steep)-slope with leveled foundation. | |
| static const TileIndexDiffC | _trackdelta [] |
| static uint32 | _drawtile_track_palette |
| static const int | INF = 1000 |
| static const SubSprite | _halftile_sub_sprite [4] |
| static const byte | _fractcoords_behind [4] = { 0x8F, 0x8, 0x80, 0xF8 } |
| static const byte | _fractcoords_enter [4] = { 0x8A, 0x48, 0x84, 0xA8 } |
| static const int8 | _deltacoord_leaveoffset [8] |
| const TileTypeProcs | _tile_type_rail_procs |
Handling of rail tiles.
Definition in file rail_cmd.cpp.
| anonymous enum |
Enums holding the offsets from base signal sprite, according to the side it is representing.
The addtion of 2 per enum is necessary in order to "jump" over the green state sprite, all signal sprites being in pair, starting with the off-red state
Definition at line 2096 of file rail_cmd.cpp.
| static CommandCost CheckRailSlope | ( | Slope | tileh, | |
| TrackBits | rail_bits, | |||
| TrackBits | existing, | |||
| TileIndex | tile | |||
| ) | [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 340 of file rail_cmd.cpp.
References _settings_game, ConstructionSettings::build_on_slopes, GameSettings::construction, EXPENSES_CONSTRUCTION, FOUNDATION_INVALID, FOUNDATION_NONE, GetRailFoundation(), IsSteepSlope(), IsTileType(), MP_RAILWAY, MP_WATER, RAIL_GROUND_WATER, and return_cmd_error.
Referenced by CmdBuildSingleRail(), and TestAutoslopeOnRailTile().
| static CommandCost CheckTrackCombination | ( | TileIndex | tile, | |
| TrackBits | to_build, | |||
| uint | flags | |||
| ) | [static] |
Check that the new track bits may be built.
| tile | Tile to build on. | |
| to_build | New track bits. | |
| flags | Flags of the operation. |
Definition at line 181 of file rail_cmd.cpp.
References DC_NO_RAIL_OVERLAP, GetTrackBits(), HasSignals(), IsPlainRail(), return_cmd_error, TRACK_BIT_HORZ, and TRACK_BIT_VERT.
Referenced by CmdBuildSingleRail().
| CommandCost CmdBuildRailroadTrack | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Build rail on a stretch of track.
Stub for the unified rail builder/remover
| tile | start tile of drag | |
| flags | operation to perform | |
| p1 | end tile of drag | |
| p2 | various bitstuffed elements
| |
| text | unused |
Definition at line 796 of file rail_cmd.cpp.
References ClrBit(), and CmdRailTrackHelper().
| CommandCost CmdBuildSignalTrack | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Build signals on a stretch of track.
Stub for the unified signal builder/remover
| tile | start tile of drag | |
| flags | operation to perform | |
| p1 | end tile of drag | |
| p2 | various bitstuffed elements
| |
| text | unused |
Definition at line 1246 of file rail_cmd.cpp.
References CmdSignalTrackHelper().
| CommandCost CmdBuildSingleRail | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Build a single piece of rail.
| tile | tile to build on | |
| flags | operation to perform | |
| p1 | railtype of being built piece (normal, mono, maglev) | |
| p2 | rail track to build | |
| text | unused |
Definition at line 370 of file rail_cmd.cpp.
References CommandCost::AddCost(), AddTrackToSignalBuffer(), AXIS_X, AXIS_Y, CheckRailSlope(), CheckTileOwnership(), CheckTrackCombination(), CMD_CONVERT_RAIL, CMD_ERROR, CMD_LANDSCAPE_CLEAR, DC_EXEC, DoCommand(), DRD_NONE, EnsureNoTrainOnTrack(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), GetDisallowedRoadDirections(), GetRailType(), GetTileSlope(), GetTileType(), GetTownIndex(), GetTrackBits(), HasBit(), HasPowerOnRail(), IsCompatibleRail(), IsPlainRail(), IsSlopeWithOneCornerRaised(), IsTileType(), MarkTileDirtyByTile(), MP_RAILWAY, MP_ROAD, MP_WATER, RAIL_GROUND_BARREN, RAIL_GROUND_WATER, RailBuildCost(), return_cmd_error, ROAD_X, ROAD_Y, ROADTYPE_ROAD, ROADTYPE_TRAM, ROADTYPES_ALL, ROADTYPES_ROAD, ROADTYPES_TRAM, CommandCost::SetGlobalErrorMessage(), SetTrackBits(), SLOPE_ENW, SLOPE_EW, SLOPE_FLAT, SLOPE_NS, SLOPE_NWS, SLOPE_SEN, SLOPE_WSE, TRACK_BIT_NONE, TRACK_X, TRACK_Y, TrackToTrackBits(), UpdateLevelCrossing(), ValParamRailtype(), and YapfNotifyTrackLayoutChange().
| CommandCost CmdBuildSingleSignal | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
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, bit 4 (cycle signal-type) is ignored
| tile | tile where to build the signals | |
| flags | operation to perform | |
| p1 | various bitstuffed elements
| |
| p2 | used for CmdBuildManySignals() to copy direction of first signal | |
| text | unused |
Definition at line 896 of file rail_cmd.cpp.
References _settings_game, AddTrackToSignalBuffer(), CheckTileOwnership(), CMD_ERROR, Vehicle::cur_speed, Vehicle::current_order, DC_EXEC, EnsureNoTrainOnTrack(), EXPENSES_CONSTRUCTION, PathfinderSettings::forbid_90_deg, FreeTrainTrackReservation(), GB(), GetPresentSignals(), GetRailReservationTrackBits(), GetSignalStates(), GetTrackBits(), GetTrainForReservation(), Train::GetVehicleTrackdir(), HasBit(), HasReservedTracks(), HasSignalOnTrack(), HasSignals(), HasTrack(), IsPlainRailTile(), IsSafeWaitingPosition(), Order::IsType(), KillFirstBit(), MarkTileDirtyByTile(), GameSettings::pf, return_cmd_error, SetHasSignals(), SetPresentSignals(), SetSignalStates(), SIG_ELECTRIC, SIG_SEMAPHORE, SignalOnTrack(), Vehicle::tile, TRACK_BIT_HORZ, TRACK_BIT_NONE, TRACK_BIT_VERT, TrackToTrackBits(), TryPathReserve(), Vehicle::vehstatus, and YapfNotifyTrackLayoutChange().
| CommandCost CmdBuildTrainDepot | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Build a train depot.
| tile | position of the train depot | |
| flags | operation to perform | |
| p1 | rail type | |
| p2 | bit 0..1 entrance direction (DiagDirection) | |
| text | unused |
Definition at line 830 of file rail_cmd.cpp.
References _settings_game, CommandCost::AddCost(), AddSideToSignalBuffer(), ConstructionSettings::build_on_slopes, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_depot_pool >::CanAllocateItem(), CanBuildDepotByTileh(), CMD_ERROR, CMD_LANDSCAPE_CLEAR, GameSettings::construction, DC_EXEC, DiagDirToDiagTrack(), DoCommand(), CommandCost::Failed(), GetTileSlope(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_DIAGDIR, IsBridgeAbove(), IsSteepSlope(), MarkTileDirtyByTile(), MayHaveBridgeAbove(), return_cmd_error, SLOPE_FLAT, ValParamRailtype(), and YapfNotifyTrackLayoutChange().
| CommandCost CmdConvertRail | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Convert one rail type to the other.
You can convert normal rail to monorail/maglev easily or vice-versa.
| tile | end tile of rail conversion drag | |
| flags | operation to perform | |
| p1 | start tile of drag | |
| p2 | new railtype to convert to | |
| text | unused |
Definition at line 1361 of file rail_cmd.cpp.
References _settings_game, CommandCost::AddCost(), SmallVector< T, S >::Append(), CheckTileOwnership(), CMD_ERROR, CountBits(), DC_EXEC, DiagDirToDiagTrack(), VehicleSettings::disable_elrails, EXPENSES_CONSTRUCTION, FindVehicleOnPos(), FreeTrainTrackReservation(), CommandCost::GetCost(), GetOtherTunnelBridgeEnd(), GetRailDepotTrack(), GetRailStationTrack(), GetRailTileType(), GetRailType(), GetReservedTrackbits(), GetTileType(), GetTrackBits(), GetTrainForReservation(), GetTunnelBridgeDirection(), GetTunnelBridgeLength(), GetTunnelBridgeTransportType(), HasPowerOnRail(), HasStationRail(), HasTunnelBridgeReservation(), HasVehicleOnTunnelBridge(), INVALID_TRACK, InvalidateWindowData(), IsBridge(), IsCompatibleRail(), SmallVector< T, S >::Length(), MapSize(), MarkTileDirtyByTile(), MP_RAILWAY, MP_ROAD, MP_STATION, MP_TUNNELBRIDGE, RAIL_TILE_DEPOT, RailConvertCost(), RAILTYPE_ELECTRIC, RAILTYPE_RAIL, RemoveFirstTrack(), SetRailType(), Swap(), TileOffsByDiagDir(), TileX(), TileXY(), TileY(), TRACK_BIT_NONE, TRANSPORT_RAIL, TryPathReserve(), UpdateTrainPowerProc(), ValParamRailtype(), GameSettings::vehicle, and YapfNotifyTrackLayoutChange().
| static CommandCost CmdRailTrackHelper | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) | [static] |
Build a stretch of railroad tracks.
| tile | start tile of drag | |
| flags | operation to perform | |
| p1 | end tile of drag | |
| p2 | various bitstuffed elements
| |
| text | unused |
Definition at line 743 of file rail_cmd.cpp.
References CommandCost::AddCost(), CMD_BUILD_SINGLE_RAIL, CMD_ERROR, CMD_REMOVE_SINGLE_RAIL, DC_EXEC, DoCommand(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), GB(), CommandCost::GetCost(), HasBit(), INVALID_STRING_ID, IsDiagonalTrackdir(), MapSize(), ToggleBit(), ToTileIndexDiff(), TrackdirToTrack(), TrackToTrackdir(), and ValParamRailtype().
Referenced by CmdBuildRailroadTrack(), and CmdRemoveRailroadTrack().
| CommandCost CmdRemoveRailroadTrack | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Build rail on a stretch of track.
Stub for the unified rail builder/remover
| tile | start tile of drag | |
| flags | operation to perform | |
| p1 | end tile of drag | |
| p2 | various bitstuffed elements
| |
| text | unused |
Definition at line 814 of file rail_cmd.cpp.
References CmdRailTrackHelper(), and SetBit().
| CommandCost CmdRemoveSignalTrack | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Remove signals on a stretch of track.
Stub for the unified signal builder/remover
| tile | start tile of drag | |
| flags | operation to perform | |
| p1 | end tile of drag | |
| p2 | various bitstuffed elements
| |
| text | unused |
Definition at line 1331 of file rail_cmd.cpp.
References CmdSignalTrackHelper(), and SetBit().
| CommandCost CmdRemoveSingleRail | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Remove a single piece of track.
| tile | tile to remove track from | |
| flags | operation to perform | |
| p1 | unused | |
| p2 | rail orientation | |
| text | unused |
Definition at line 510 of file rail_cmd.cpp.
References CommandCost::AddCost(), AddTrackToSignalBuffer(), CheckTileOwnership(), CMD_ERROR, CMD_REMOVE_SIGNALS, DC_BANKRUPT, DC_EXEC, DoCommand(), EnsureNoTrainOnTrack(), EXPENSES_CONSTRUCTION, FreeTrainTrackReservation(), GetRailReservationTrackBits(), GetRailType(), GetTileOwner(), GetTileSlope(), GetTileType(), GetTownIndex(), GetTrackBits(), GetTrainForReservation(), HasReservedTracks(), HasSignalOnTrack(), INVALID_OWNER, IsPlainRail(), IsSlopeWithOneCornerRaised(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), MarkTileDirtyByTile(), MP_RAILWAY, MP_ROAD, OWNER_WATER, RAIL_GROUND_WATER, RailClearCost(), ROADTYPE_ROAD, ROADTYPE_TRAM, SetTrackBits(), SetTrackReservation(), TRACK_BIT_X, TRACK_BIT_Y, TRACK_X, TRACK_Y, TrackToTrackBits(), TryPathReserve(), and YapfNotifyTrackLayoutChange().
| CommandCost CmdRemoveSingleSignal | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Remove signals.
| tile | coordinates where signal is being deleted from | |
| flags | operation to perform | |
| p1 | various bitstuffed elements, only track information is used
| |
| p2 | unused | |
| text | unused |
Definition at line 1262 of file rail_cmd.cpp.
References AddTrackToSignalBuffer(), CheckTileOwnership(), CMD_ERROR, DC_EXEC, EnsureNoTrainOnTrack(), EXPENSES_CONSTRUCTION, GB(), GetPresentSignals(), GetReservedTrackbits(), GetTileOwner(), GetTrainForReservation(), HasReservedTracks(), HasSignalOnTrack(), HasSignalOnTrackdir(), HasTrack(), INVALID_TRACK, IsPlainRailTile(), MarkTileDirtyByTile(), OWNER_WATER, ReverseTrackdir(), SetHasSignals(), SetPresentSignals(), SetSignalStates(), SIG_ELECTRIC, SignalOnTrack(), TileAddByDiagDir(), TrackBitsToTrack(), TrackdirBitsToTrackBits(), TrackdirReachesTrackdirs(), TrackdirToExitdir(), TrackToTrackBits(), TrackToTrackdir(), TryPathReserve(), and YapfNotifyTrackLayoutChange().
| static CommandCost CmdSignalTrackHelper | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) | [static] |
Build many signals by dragging; AutoSignals.
| tile | start tile of drag | |
| flags | operation to perform | |
| p1 | end tile of drag | |
| p2 | various bitstuffed elements
| |
| text | unused |
Definition at line 1119 of file rail_cmd.cpp.
References CommandCost::AddCost(), CMD_BUILD_SIGNALS, CMD_ERROR, CMD_REMOVE_SIGNALS, DoCommand(), EXPENSES_CONSTRUCTION, GB(), GetPresentSignals(), HasBit(), HasSignalOnTrack(), HasTrack(), IsDiagonalTrackdir(), IsPlainRailTile(), MapSize(), SB(), SetBit(), SIG_ELECTRIC, SignalAgainstTrackdir(), SignalAlongTrackdir(), SignalOnTrack(), SIGTYPE_NORMAL, SIGTYPE_PBS, CommandCost::Succeeded(), ToggleBit(), ToTileIndexDiff(), TrackdirToTrack(), and TrackToTrackdir().
Referenced by CmdBuildSignalTrack(), and CmdRemoveSignalTrack().
Draw ground sprite and track bits.
| ti | TileInfo | |
| track | TrackBits to draw |
Definition at line 1947 of file rail_cmd.cpp.
References _settings_client, RailtypeInfo::base_sprites, ComplementSlope(), CornerToTrackBits(), DrawFoundation(), DrawGroundSprite(), FOUNDATION_NONE, FOUNDATION_STEEP_BOTH, FOUNDATION_STEEP_LOWER, GetHalftileFoundationCorner(), GetHighestSlopeCorner(), GetRailFoundation(), GetRailReservationTrackBits(), GetRailType(), GetRailTypeInfo(), RailtypeInfo::ground, ClientSettings::gui, HalftileFoundation(), HasReservedTracks(), IsNonContinuousFoundation(), IsSteepSlope(), IsValidCorner(), OppositeCorner(), RAIL_GROUND_BARREN, RAIL_GROUND_HALF_SNOW, RAIL_GROUND_ICE_DESERT, RAIL_GROUND_WATER, GUISettings::show_track_reservation, RailtypeInfo::single_e, RailtypeInfo::single_n, RailtypeInfo::single_s, RailtypeInfo::single_sloped, RailtypeInfo::single_w, RailtypeInfo::single_x, RailtypeInfo::single_y, SLOPE_E, SLOPE_ELEVATED, SLOPE_FLAT, SLOPE_N, SLOPE_S, SLOPE_W, SlopeWithThreeCornersRaised(), RailtypeInfo::snow_offset, TileInfo::tile, TILE_HEIGHT, TileInfo::tileh, TRACK_BIT_CROSS, TRACK_BIT_HORZ, TRACK_BIT_LEFT, TRACK_BIT_VERT, RailtypeInfo::track_ns, and RailtypeInfo::track_y.
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 168 of file rail_cmd.cpp.
References HasVehicleOnPos(), and TrackToTrackBits().
Referenced by CmdBuildSingleRail(), CmdBuildSingleSignal(), CmdRemoveSingleRail(), and CmdRemoveSingleSignal().
| 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 627 of file rail_cmd.cpp.
References ApplyFoundationToSlope(), CMD_REMOVE_SINGLE_RAIL, CornerToTrackBits(), DC_EXEC, DoCommand(), FIND_FIRST_BIT, GetHighestSlopeCorner(), GetRailFoundation(), GetTileSlope(), GetTrackBits(), IsNonContinuousFoundation(), IsPlainRailTile(), IsSlopeWithOneCornerRaised(), IsSlopeWithThreeCornersRaised(), IsSteepSlope(), MarkTileDirtyByTile(), OppositeCorner(), OWNER_WATER, and RAIL_GROUND_WATER.
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 260 of file rail_cmd.cpp.
References CornerToTrackBits(), FOUNDATION_INCLINED_X, FOUNDATION_INCLINED_Y, FOUNDATION_INVALID, FOUNDATION_LEVELED, FOUNDATION_NONE, FOUNDATION_STEEP_BOTH, FOUNDATION_STEEP_LOWER, GetHighestSlopeCorner(), HalftileFoundation(), IsSlopeWithOneCornerRaised(), IsSlopeWithThreeCornersRaised(), IsSteepSlope(), OppositeCorner(), SLOPE_E, SLOPE_N, SLOPE_S, SLOPE_W, SlopeWithOneCornerRaised(), SlopeWithThreeCornersRaised(), SpecialRailFoundation(), TRACK_BIT_HORZ, TRACK_BIT_LEFT, TRACK_BIT_LOWER, TRACK_BIT_NONE, TRACK_BIT_RIGHT, TRACK_BIT_UPPER, TRACK_BIT_VERT, TRACK_BIT_X, TRACK_BIT_Y, and TracksOverlap().
Referenced by CheckRailSlope(), DrawCatenaryRailway(), DrawTrackBits(), FloodHalftile(), and TestAutoslopeOnRailTile().
| static uint GetSaveSlopeZ | ( | uint | x, | |
| uint | y, | |||
| Track | track | |||
| ) | [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 1610 of file rail_cmd.cpp.
References TRACK_LEFT, TRACK_LOWER, TRACK_RIGHT, and TRACK_UPPER.
| void ResetRailTypes | ( | ) |
Initialize rail type information.
Reset all rail type information to its default values.
Definition at line 51 of file rail_cmd.cpp.
References _original_railtypes.
Referenced by ResetNewGRFData().
| static CommandCost TestAutoslopeOnRailTile | ( | TileIndex | tile, | |
| uint | flags, | |||
| uint | z_old, | |||
| Slope | tileh_old, | |||
| uint | z_new, | |||
| Slope | tileh_new, | |||
| TrackBits | rail_bits | |||
| ) | [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 2709 of file rail_cmd.cpp.
References _settings_game, CommandCost::AddCost(), ApplyFoundationToSlope(), AutoslopeEnabled(), ConstructionSettings::build_on_slopes, CheckRailSlope(), CMD_ERROR, GameSettings::construction, EXPENSES_CONSTRUCTION, GetRailFoundation(), GetSlopeZInCorner(), IsSlopeWithOneCornerRaised(), RAIL_GROUND_BARREN, RAIL_GROUND_WATER, RemoveHalftileSlope(), 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 2630 of file rail_cmd.cpp.
References TrainCache::cached_veh_length, DIAGDIR_NE, DIAGDIR_NW, DIAGDIR_SE, DIAGDIR_SW, GetRailDepotDirection(), and Vehicle::tile.
Referenced by AdvanceWagonsAfterSwap(), and CheckTrainsLengths().
| static VehicleEnterTileStatus VehicleEnter_Track | ( | Vehicle * | u, | |
| TileIndex | tile, | |||
| int | x, | |||
| int | y | |||
| ) | [static] |
Tile callback routine when vehicle enters tile.
Definition at line 2648 of file rail_cmd.cpp.
References AXIS_X, TrainCache::cached_veh_length, DiagDirToAxis(), DiagDirToDir(), SpecializedVehicle< T, Type >::First(), SpecializedVehicle< Train, VEH_TRAIN >::From(), GetRailDepotDirection(), InvalidateWindowData(), IsRailDepotTile(), SpecializedVehicle< T, Type >::Next(), ReverseDiagDir(), ReverseDir(), Vehicle::tile, TRACK_BIT_DEPOT, BaseVehicle::type, VEH_TRAIN, Vehicle::vehstatus, VETSB_CANNOT_ENTER, VETSB_CONTINUE, and VETSB_ENTERED_WORMHOLE.
const int8 _deltacoord_leaveoffset[8] [static] |
{
-1, 0, 1, 0,
0, 1, 0, -1
}
Definition at line 2619 of file rail_cmd.cpp.
const SubSprite _halftile_sub_sprite[4] [static] |
{
{ -INF , -INF , 32 - 33, INF },
{ -INF , 0 + 7, INF , INF },
{ -31 + 33, -INF , INF , INF },
{ -INF , -INF , INF , 30 - 23 }
}
Definition at line 1787 of file rail_cmd.cpp.
| const TileTypeProcs _tile_type_rail_procs |
{
DrawTile_Track,
GetSlopeZ_Track,
ClearTile_Track,
NULL,
GetTileDesc_Track,
GetTileTrackStatus_Track,
ClickTile_Track,
NULL,
TileLoop_Track,
ChangeTileOwner_Track,
NULL,
VehicleEnter_Track,
GetFoundation_Track,
TerraformTile_Track,
}
const byte _track_sloped_sprites[14] [static] |
{
14, 15, 22, 13,
0, 21, 17, 12,
23, 0, 18, 20,
19, 16
}
Definition at line 108 of file rail_cmd.cpp.
const TileIndexDiffC _trackdelta[] [static] |
{
{ -1, 0 }, { 0, 1 }, { -1, 0 }, { 0, 1 }, { 1, 0 }, { 0, 1 },
{ 0, 0 },
{ 0, 0 },
{ 1, 0 }, { 0, -1 }, { 0, -1 }, { 1, 0 }, { 0, -1 }, { -1, 0 },
{ 0, 0 },
{ 0, 0 }
}
Definition at line 671 of file rail_cmd.cpp.
const TrackBits _valid_tracks_on_leveled_foundation[15] [static] |
{
TRACK_BIT_NONE,
TRACK_BIT_LEFT,
TRACK_BIT_LOWER,
TRACK_BIT_Y | TRACK_BIT_LOWER | TRACK_BIT_LEFT,
TRACK_BIT_RIGHT,
TRACK_BIT_ALL,
TRACK_BIT_X | TRACK_BIT_LOWER | TRACK_BIT_RIGHT,
TRACK_BIT_ALL,
TRACK_BIT_UPPER,
TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_LEFT,
TRACK_BIT_ALL,
TRACK_BIT_ALL,
TRACK_BIT_Y | TRACK_BIT_UPPER | TRACK_BIT_RIGHT,
TRACK_BIT_ALL,
TRACK_BIT_ALL
}
Valid TrackBits on a specific (non-steep)-slope with leveled foundation.
Definition at line 232 of file rail_cmd.cpp.
const TrackBits _valid_tracks_without_foundation[15] [static] |
{
TRACK_BIT_ALL,
TRACK_BIT_RIGHT,
TRACK_BIT_UPPER,
TRACK_BIT_X,
TRACK_BIT_LEFT,
TRACK_BIT_NONE,
TRACK_BIT_Y,
TRACK_BIT_LOWER,
TRACK_BIT_LOWER,
TRACK_BIT_Y,
TRACK_BIT_NONE,
TRACK_BIT_LEFT,
TRACK_BIT_X,
TRACK_BIT_UPPER,
TRACK_BIT_RIGHT,
}
Valid TrackBits on a specific (non-steep)-slope without foundation.
Definition at line 210 of file rail_cmd.cpp.
1.6.1