OpenTTD Source
20241120-master-g6d3adc6169
|
Rail specific functions. More...
#include "rail_type.h"
#include "track_type.h"
#include "gfx_type.h"
#include "core/bitmath_func.hpp"
#include "economy_func.h"
#include "slope_type.h"
#include "strings_type.h"
#include "timer/timer_game_calendar.h"
#include "signal_type.h"
#include "settings_type.h"
Go to the source code of this file.
Data Structures | |
class | RailTypeInfo |
This struct contains all the info that is needed to draw and construct tracks. More... | |
Typedefs | |
typedef std::vector< RailTypeLabel > | RailTypeLabelList |
List of rail type labels. | |
Functions | |
const RailTypeInfo * | GetRailTypeInfo (RailType railtype) |
Returns a pointer to the Railtype information for a given railtype. More... | |
bool | IsCompatibleRail (RailType enginetype, RailType tiletype) |
Checks if an engine of the given RailType can drive on a tile with a given RailType. More... | |
bool | HasPowerOnRail (RailType enginetype, RailType tiletype) |
Checks if an engine of the given RailType got power on a tile with a given RailType. More... | |
bool | RailNoLevelCrossings (RailType rt) |
Test if a RailType disallows build of level crossings. More... | |
bool | Rail90DegTurnDisallowed (RailType rt1, RailType rt2, bool def=_settings_game.pf.forbid_90_deg) |
Test if 90 degree turns are disallowed between two railtypes. More... | |
Money | RailBuildCost (RailType railtype) |
Returns the cost of building the specified railtype. More... | |
Money | RailClearCost (RailType railtype) |
Returns the 'cost' of clearing the specified railtype. More... | |
Money | RailConvertCost (RailType from, RailType to) |
Calculates the cost of rail conversion. More... | |
Money | RailMaintenanceCost (RailType railtype, uint32_t num, uint32_t total_num) |
Calculates the maintenance cost of a number of track bits. More... | |
Money | SignalMaintenanceCost (uint32_t num) |
Calculates the maintenance cost of a number of signals. More... | |
void | DrawTrainDepotSprite (int x, int y, int image, RailType railtype) |
int | TicksToLeaveDepot (const Train *v) |
Compute number of ticks when next wagon will leave a depot. More... | |
Foundation | GetRailFoundation (Slope tileh, TrackBits bits) |
Checks if a track combination is valid on a specific slope and returns the needed foundation. More... | |
bool | HasRailTypeAvail (const CompanyID company, const RailType railtype) |
Finds out if a company has a certain buildable railtype available. More... | |
bool | HasAnyRailTypesAvail (const CompanyID company) |
Test if any buildable railtype is available for a company. More... | |
bool | ValParamRailType (const RailType rail) |
Validate functions for rail building. More... | |
RailTypes | AddDateIntroducedRailTypes (RailTypes current, TimerGameCalendar::Date date) |
Add the rail types that are to be introduced at the given date. More... | |
RailTypes | GetCompanyRailTypes (CompanyID company, bool introduces=true) |
Get the rail types the given company can build. More... | |
RailTypes | GetRailTypes (bool introduces) |
Get list of rail types, regardless of company availability. More... | |
RailType | GetRailTypeByLabel (RailTypeLabel label, bool allow_alternate_labels=true) |
Get the rail type for a given label. More... | |
void | ResetRailTypes () |
Reset all rail type information to its default values. | |
void | InitRailTypes () |
Resolve sprites of custom rail types. | |
RailType | AllocateRailType (RailTypeLabel label) |
Allocate a new rail type label. | |
Variables | |
std::vector< RailType > | _sorted_railtypes |
RailTypes | _railtypes_hidden_mask |
Rail specific functions.
Definition in file rail.h.
enum RailFenceOffset |
Offsets from base sprite for fence sprites.
These are in the order of the sprites in the original data files.
enum RailTrackOffset |
Offsets for sprites within an overlay/underlay set.
These are the same for overlay and underlay sprites.
enum RailTypeFlag |
Railtype flag bit numbers.
enum RailTypeFlags : uint8_t |
Railtype flags.
enum RailTypeSpriteGroup |
Sprite groups for a railtype.
Enumerator | |
---|---|
RTSG_CURSORS | Cursor and toolbar icon images. |
RTSG_OVERLAY | Images for overlaying track. |
RTSG_GROUND | Main group of ground images. |
RTSG_TUNNEL | Main group of ground images for snow or desert. |
RTSG_WIRES | Catenary wires. |
RTSG_PYLONS | Catenary pylons. |
RTSG_BRIDGE | Bridge surface images. |
RTSG_CROSSING | Level crossing overlay images. |
RTSG_DEPOT | Depot images. |
RTSG_FENCES | Fence images. |
RTSG_TUNNEL_PORTAL | Tunnel portal overlay. |
RTSG_SIGNALS | Signal images. |
RTSG_GROUND_COMPLETE | Complete ground images. |
Add the rail types that are to be introduced at the given date.
current | The currently available railtypes. |
date | The date for the introduction comparisons. |
Definition at line 218 of file rail.cpp.
References GetRailTypeInfo(), RailTypeInfo::introduces_railtypes, RailTypeInfo::introduction_date, RailTypeInfo::introduction_required_railtypes, IsInsideMM(), RailTypeInfo::label, TimerGameConst< struct Calendar >::MAX_DATE, RAILTYPE_BEGIN, and RAILTYPE_END.
Referenced by GetCompanyRailTypes(), GetRailTypes(), and NewVehicleAvailable().
Get the rail types the given company can build.
company | the company to get the rail types for. |
introduces | If true, include rail types introduced by other rail types |
Definition at line 251 of file rail.cpp.
References _settings_game, AddDateIntroducedRailTypes(), EngineInfo::climates, TimerGameCalendar::date, TimerGameConst< struct Calendar >::DAYS_IN_YEAR, GameSettings::game_creation, GetRailTypeInfo(), HasBit(), RailTypeInfo::introduces_railtypes, Engine::IterateType(), GameCreationSettings::landscape, RailVehicleInfo::railtype, RAILTYPE_END, RAILTYPES_NONE, RAILVEH_WAGON, SetBit(), and VEH_TRAIN.
Referenced by DisableEngineForCompany(), EnableEngineForCompany(), and GetRailTypeDropDownList().
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().
RailType GetRailTypeByLabel | ( | RailTypeLabel | label, |
bool | allow_alternate_labels | ||
) |
Get the rail type for a given label.
label | the railtype label. |
allow_alternate_labels | Search in the alternate label lists as well. |
Definition at line 311 of file rail.cpp.
References RailTypeInfo::alternate_labels, GetRailTypeInfo(), INVALID_RAILTYPE, RailTypeInfo::label, RAILTYPE_BEGIN, and RAILTYPE_END.
Referenced by GetRailTypeTranslation().
|
inline |
Returns a pointer to the Railtype information for a given railtype.
railtype | the rail type which the information is requested for |
Definition at line 307 of file rail.h.
Referenced by AddDateIntroducedRailTypes(), CheckAutoreplaceValidity(), CompareRailTypes(), DrawBridgeMiddle(), DrawTile_Road(), DrawTile_TunnelBridge(), DrawTrackBits(), FollowTrainReservation(), Train::GetAccelerationType(), GetCompanyRailTypes(), GetPylonBase(), GetRailTypeByLabel(), GetRailTypes(), GetRailTypeTranslation(), GetReverseRailTypeTranslation(), GetTrainForReservation(), GetWireBase(), HasPowerOnRail(), HasRailCatenary(), IsCompatibleRail(), IsEngineBuildable(), NewVehicleAvailable(), BuildRailToolbarWindow::OnInit(), BuildSignalWindow::OnInit(), Rail90DegTurnDisallowed(), RailNoLevelCrossings(), and RAILChunkHandler::Save().
RailTypes GetRailTypes | ( | bool | introduces | ) |
Get list of rail types, regardless of company availability.
introduces | If true, include rail types introduced by other rail types |
Definition at line 282 of file rail.cpp.
References _settings_game, AddDateIntroducedRailTypes(), EngineInfo::climates, GameSettings::game_creation, GetRailTypeInfo(), HasBit(), RailTypeInfo::introduces_railtypes, Engine::IterateType(), GameCreationSettings::landscape, TimerGameConst< struct Calendar >::MAX_DATE, RailVehicleInfo::railtype, RAILTYPE_END, RAILTYPES_NONE, RAILVEH_WAGON, SetBit(), and VEH_TRAIN.
Referenced by GetRailTypeDropDownList().
bool HasAnyRailTypesAvail | ( | const CompanyID | company | ) |
Test if any buildable railtype is available for a company.
company | the company in question |
Definition at line 196 of file rail.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get().
Referenced by CanBuildVehicleInfrastructure().
Checks if an engine of the given RailType got power on a tile with a given RailType.
This would normally just be an equality check, but for electric rails (which also support non-electric engines).
enginetype | The RailType of the engine we are considering. |
tiletype | The RailType of the tile we are considering. |
Definition at line 335 of file rail.h.
References GetRailTypeInfo(), and HasBit().
Referenced by CmdBuildRailVehicle(), CmdConvertRail(), and RailConvertCost().
Finds out if a company has a certain buildable railtype available.
company | the company in question |
railtype | requested RailType |
Definition at line 186 of file rail.cpp.
References HasBit().
Referenced by ValParamRailType().
Checks if an engine of the given RailType can drive on a tile with a given RailType.
This would normally just be an equality check, but for electric rails (which also support non-electric engines).
enginetype | The RailType of the engine we are considering. |
tiletype | The RailType of the tile we are considering. |
Definition at line 322 of file rail.h.
References GetRailTypeInfo(), and HasBit().
Referenced by CmdBuildRailWagon(), CmdConvertRail(), and IsCompatibleTrainStationTile().
|
inline |
Test if 90 degree turns are disallowed between two railtypes.
rt1 | First railtype to test for. |
rt2 | Second railtype to test for. |
def | Default value to use if the rail type doesn't specify anything. |
Definition at line 357 of file rail.h.
References RailTypeInfo::flags, GetRailTypeInfo(), HasBit(), INVALID_RAILTYPE, RTF_ALLOW_90DEG, and RTF_DISALLOW_90DEG.
Referenced by ExtendTrainReservation(), TrainController(), and TryPathReserve().
Returns the cost of building the specified railtype.
railtype | The railtype being built. |
Definition at line 375 of file rail.h.
References RAILTYPE_END.
Referenced by RailConvertCost().
Returns the 'cost' of clearing the specified railtype.
railtype | The railtype being removed. |
Definition at line 386 of file rail.h.
References RAILTYPE_END.
Referenced by RailConvertCost().
Calculates the cost of rail conversion.
from | The railtype we are converting from |
to | The railtype we are converting to |
Definition at line 403 of file rail.h.
References HasPowerOnRail(), RailBuildCost(), and RailClearCost().
Referenced by CmdConvertRail().
Calculates the maintenance cost of a number of track bits.
railtype | The railtype to get the cost of. |
num | Number of track bits of this railtype. |
total_num | Total number of track bits of all railtypes. |
Definition at line 430 of file rail.h.
References RAILTYPE_END.
Referenced by CompaniesGenStatistics(), and CompanyInfrastructureWindow::GetTotalMaintenanceCost().
|
inline |
Test if a RailType disallows build of level crossings.
rt | The RailType to check. |
Definition at line 345 of file rail.h.
References GetRailTypeInfo(), HasBit(), and RTF_NO_LEVEL_CROSSING.
Referenced by CmdConvertRail().
|
inline |
Calculates the maintenance cost of a number of signals.
num | Number of signals. |
Definition at line 441 of file rail.h.
Referenced by CompaniesGenStatistics(), and CompanyInfrastructureWindow::GetTotalMaintenanceCost().
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().
bool ValParamRailType | ( | const RailType | rail | ) |
Validate functions for rail building.
rail | the railtype to check. |
Definition at line 206 of file rail.cpp.
References _current_company, HasRailTypeAvail(), and RAILTYPE_END.
Referenced by CmdBuildBridge(), CmdBuildSingleRail(), CmdBuildTrainDepot(), CmdBuildTunnel(), CmdConvertRail(), CmdRailTrackHelper(), BuildRailToolbarWindow::OnInvalidateData(), and ShowBuildRailToolbar().