#include "rail_type.h"
#include "track_type.h"
#include "vehicle_type.h"
#include "gfx_type.h"
#include "core/bitmath_func.hpp"
#include "economy_func.h"
#include "slope_type.h"
Go to the source code of this file.
Data Structures | |
struct | RailtypeInfo |
This struct contains all the info that is needed to draw and construct tracks. More... | |
Enumerations | |
enum | RailTypeFlag { RTF_CATENARY = 0 } |
enum | RailTypeFlags { RTFB_NONE = 0, RTFB_CATENARY = 1 << RTF_CATENARY } |
enum | RailFenceOffset { RFO_FLAT_X, RFO_FLAT_Y, RFO_FLAT_VERT, RFO_FLAT_HORZ, RFO_SLOPE_SW, RFO_SLOPE_SE, RFO_SLOPE_NE, RFO_SLOPE_NW } |
Offsets from base sprite for fence sprites. More... | |
Functions | |
DECLARE_ENUM_AS_BIT_SET (RailTypeFlags) | |
static const RailtypeInfo * | GetRailTypeInfo (RailType railtype) |
Returns a pointer to the Railtype information for a given railtype. | |
static bool | IsCompatibleRail (RailType enginetype, RailType tiletype) |
Checks if an engine of the given RailType can drive on a tile with a given RailType. | |
static bool | HasPowerOnRail (RailType enginetype, RailType tiletype) |
Checks if an engine of the given RailType got power on a tile with a given RailType. | |
static Money | RailBuildCost (RailType railtype) |
Returns the cost of building the specified railtype. | |
static Money | RailConvertCost (RailType from, RailType to) |
Calculates the cost of rail conversion. | |
Vehicle * | UpdateTrainPowerProc (Vehicle *v, void *data) |
Update power of train under which is the railtype being converted. | |
void | DrawTrainDepotSprite (int x, int y, int image, RailType railtype) |
void | DrawDefaultWaypointSprite (int x, int y, RailType railtype) |
Vehicle * | EnsureNoTrainOnTrackProc (Vehicle *v, void *data) |
int | TicksToLeaveDepot (const Vehicle *v) |
Compute number of ticks when next wagon will leave a depot. | |
Foundation | GetRailFoundation (Slope tileh, TrackBits bits) |
Checks if a track combination is valid on a specific slope and returns the needed foundation. | |
bool | HasRailtypeAvail (const CompanyID company, const RailType railtype) |
Finds out if a company has a certain railtype available. | |
bool | ValParamRailtype (const RailType rail) |
Validate functions for rail building. | |
RailType | GetBestRailtype (const CompanyID company) |
Returns the "best" railtype a company can build. | |
RailTypes | GetCompanyRailtypes (const CompanyID c) |
Get the rail types the given company can build. | |
RailType | GetRailTypeByLabel (RailTypeLabel label) |
Get the rail type for a given label. | |
void | ResetRailTypes () |
Reset all rail type information to its default values. |
Definition in file rail.h.
enum RailFenceOffset |
enum RailTypeFlag |
Returns the "best" railtype a company can build.
As the AI doesn't know what the BEST one is, we have our own priority list here. When adding new railtypes, modify this function
company | the company "in action" |
Definition at line 181 of file rail.cpp.
References HasRailtypeAvail(), RAILTYPE_ELECTRIC, RAILTYPE_MAGLEV, RAILTYPE_MONO, and RAILTYPE_RAIL.
Referenced by SetDefaultRailGui().
Get the rail types the given company can build.
company | the company to get the rail types for. |
Definition at line 189 of file rail.cpp.
References _date, _settings_game, EngineInfo::climates, DAYS_IN_YEAR, GameSettings::game_creation, HasBit(), GameCreationSettings::landscape, RAILTYPE_END, RAILTYPES_NONE, RAILVEH_WAGON, and SetBit().
Referenced by DoStartupNewCompany(), and SettingsDisableElrail().
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 198 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().
RailType GetRailTypeByLabel | ( | RailTypeLabel | label | ) |
Get the rail type for a given label.
label | the railtype label. |
Definition at line 211 of file rail.cpp.
References GetRailTypeInfo(), INVALID_RAILTYPE, RailtypeInfo::label, RAILTYPE_BEGIN, and RAILTYPE_END.
Referenced by RailVehicleChangeInfo().
static const RailtypeInfo* GetRailTypeInfo | ( | RailType | railtype | ) | [inline, static] |
Returns a pointer to the Railtype information for a given railtype.
railtype | the rail type which the information is requested for |
Definition at line 148 of file rail.h.
References RAILTYPE_END.
Referenced by BuildRailClick_AutoRail(), BuildRailClick_Convert(), BuildRailClick_Depot(), BuildRailClick_E(), BuildRailClick_N(), BuildRailClick_NE(), BuildRailClick_NW(), BuildRailClick_Tunnel(), CheckAutoreplaceValidity(), DrawStationTile(), DrawTile_Road(), DrawTile_TunnelBridge(), DrawTrackBits(), FollowTrainReservation(), FreeTrainTrackReservation(), GetGlobalVariable(), GetRailTypeByLabel(), GetTrainAcceleration(), GetTrainForReservation(), HasCatenary(), HasPowerOnRail(), IsCompatibleRail(), IsSafeWaitingPosition(), IsWaitingPositionFree(), NPFRouteToSafeTile(), ReplaceVehicleWindow::OnClick(), ReplaceVehicleWindow::OnPaint(), RailBuildCost(), SetupRailToolbar(), and TrainConsistChanged().
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 176 of file rail.h.
References GetRailTypeInfo(), and HasBit().
Referenced by CmdBuildRailVehicle(), CmdBuildSingleRail(), CmdConvertRail(), AIEngine::HasPowerOnRail(), RailConvertCost(), AIRail::TrainHasPowerOnRail(), and TrainPowerChanged().
Finds out if a company has a certain railtype available.
company | the company in question | |
railtype | requested RailType |
Definition at line 171 of file rail.cpp.
References HasBit().
Referenced by GetBestRailtype(), AIRail::IsRailTypeAvailable(), SetDefaultRailGui(), and 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 163 of file rail.h.
References GetRailTypeInfo(), and HasBit().
Referenced by AIEngine::CanRunOnRail(), CmdBuildRailWagon(), CmdBuildSingleRail(), CmdConvertRail(), and AIRail::TrainCanRunOnRail().
Returns the cost of building the specified railtype.
railtype | The railtype being built. |
Definition at line 186 of file rail.h.
References GetRailTypeInfo(), and RAILTYPE_END.
Referenced by CmdBuildSingleRail(), and RailConvertCost().
Calculates the cost of rail conversion.
from | The railtype we are converting from | |
to | The railtype we are converting to |
Definition at line 198 of file rail.h.
References HasPowerOnRail(), and RailBuildCost().
Referenced by CmdConvertRail().
int TicksToLeaveDepot | ( | const Vehicle * | 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 2431 of file rail_cmd.cpp.
References DIAGDIR_NE, DIAGDIR_NW, DIAGDIR_SE, DIAGDIR_SW, and GetRailDepotDirection().
Referenced by AdvanceWagonsAfterSwap(), and CheckTrainsLengths().
bool ValParamRailtype | ( | const RailType | rail | ) |
Validate functions for rail building.
rail | the railtype to check. |
Definition at line 176 of file rail.cpp.
References HasRailtypeAvail().
Referenced by CmdBuildBridge(), CmdBuildRailroadStation(), CmdBuildSingleRail(), CmdBuildTrainDepot(), CmdBuildTunnel(), CmdConvertRail(), CmdRailTrackHelper(), and ShowBuildRailToolbar().