Implementation of rail specific functions. More...
#include "stdafx.h"#include "station_map.h"#include "tunnelbridge_map.h"#include "date_func.h"#include "company_func.h"#include "company_base.h"#include "engine_base.h"Go to the source code of this file.
Functions | |
| RailType | GetTileRailType (TileIndex tile) |
| Return the rail type of tile, or INVALID_RAILTYPE if this is no rail tile. | |
| 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 | AddDateIntroducedRailTypes (RailTypes current, Date date) |
| Add the rail types that are to be introduced at the given date. | |
| RailTypes | GetCompanyRailtypes (CompanyID company) |
| Get the rail types the given company can build. | |
| RailType | GetRailTypeByLabel (RailTypeLabel label, bool allow_alternate_labels) |
| Get the rail type for a given label. | |
Variables | |
| const byte | _signal_along_trackdir [TRACKDIR_END] |
| const byte | _signal_against_trackdir [TRACKDIR_END] |
| const byte | _signal_on_track [] |
| const TrackdirBits | _exitdir_reaches_trackdirs [] |
| const Trackdir | _next_trackdir [TRACKDIR_END] |
| const TrackdirBits | _track_crosses_trackdirs [TRACKDIR_END] |
| const TrackBits | _track_crosses_tracks [] |
| const DiagDirection | _trackdir_to_exitdir [TRACKDIR_END] |
| const Trackdir | _track_exitdir_to_trackdir [][DIAGDIR_END] |
| const Trackdir | _track_enterdir_to_trackdir [][DIAGDIR_END] |
| const Trackdir | _track_direction_to_trackdir [][DIR_END] |
| const Trackdir | _dir_to_diag_trackdir [] |
| const TrackBits | _corner_to_trackbits [] |
| const TrackdirBits | _uphill_trackdirs [] |
Implementation of rail specific functions.
Definition in file rail.cpp.
Add the rail types that are to be introduced at the given date.
| current | The currently available railtypes. | |
| date | The date for the introduction comparisions. |
Definition at line 223 of file rail.cpp.
References AddDateIntroducedRailTypes(), GetRailTypeInfo(), RailtypeInfo::introduces_railtypes, RailtypeInfo::introduction_date, RailtypeInfo::introduction_required_railtypes, IsInsideMM(), RailtypeInfo::label, MAX_DAY, and RAILTYPE_BEGIN.
Referenced by AcceptEnginePreview(), AddDateIntroducedRailTypes(), CheckRailIntroduction(), GetCompanyRailtypes(), GetRailTypeDropDownList(), and NewVehicleAvailable().
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 208 of file rail.cpp.
References HasRailtypeAvail(), RAILTYPE_ELECTRIC, RAILTYPE_MAGLEV, and RAILTYPE_MONO.
Referenced by SetDefaultRailGui().
Get the rail types the given company can build.
| c | the company to get the rail types for. |
Definition at line 255 of file rail.cpp.
References _date, _settings_game, AddDateIntroducedRailTypes(), EngineInfo::climates, Engine::company_avail, DAYS_IN_YEAR, GameSettings::game_creation, GetRailTypeInfo(), HasBit(), Engine::intro_date, RailtypeInfo::introduces_railtypes, GameCreationSettings::landscape, RAILTYPE_END, RAILVEH_WAGON, and VEH_TRAIN.
Referenced by AfterLoadGame(), DoStartupNewCompany(), SettingsDisableElrail(), and StartupEngines().
| 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 283 of file rail.cpp.
References RailtypeInfo::alternate_labels, SmallVector< T, S >::Contains(), GetRailTypeInfo(), RailtypeInfo::label, and RAILTYPE_BEGIN.
Referenced by AfterLoadGRFs(), and RailTypeChangeInfo().
Finds out if a company has a certain railtype available.
| company | the company in question | |
| railtype | requested RailType |
Definition at line 186 of file rail.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), and HasBit().
Referenced by GetBestRailtype(), SetDefaultRailGui(), and ValParamRailtype().
| bool ValParamRailtype | ( | const RailType | rail | ) |
Validate functions for rail building.
| rail | the railtype to check. |
Definition at line 196 of file rail.cpp.
References _current_company, HasRailtypeAvail(), and RAILTYPE_END.
Referenced by CmdBuildBridge(), CmdBuildRailStation(), CmdBuildSingleRail(), CmdBuildTrainDepot(), CmdBuildTunnel(), CmdConvertRail(), CmdRailTrackHelper(), and ShowBuildRailToolbar().
| const TrackBits _corner_to_trackbits[] |
{
TRACK_BIT_LEFT, TRACK_BIT_LOWER, TRACK_BIT_RIGHT, TRACK_BIT_UPPER,
}
| const Trackdir _dir_to_diag_trackdir[] |
{
TRACKDIR_X_NE, TRACKDIR_Y_SE, TRACKDIR_X_SW, TRACKDIR_Y_NW,
}
| const TrackdirBits _exitdir_reaches_trackdirs[] |
{
TRACKDIR_BIT_X_NE | TRACKDIR_BIT_LOWER_E | TRACKDIR_BIT_LEFT_N,
TRACKDIR_BIT_Y_SE | TRACKDIR_BIT_LEFT_S | TRACKDIR_BIT_UPPER_E,
TRACKDIR_BIT_X_SW | TRACKDIR_BIT_UPPER_W | TRACKDIR_BIT_RIGHT_S,
TRACKDIR_BIT_Y_NW | TRACKDIR_BIT_RIGHT_N | TRACKDIR_BIT_LOWER_W
}
| const Trackdir _next_trackdir[TRACKDIR_END] |
{
TRACKDIR_X_NE, TRACKDIR_Y_SE, TRACKDIR_LOWER_E, TRACKDIR_UPPER_E, TRACKDIR_RIGHT_S, TRACKDIR_LEFT_S, INVALID_TRACKDIR, INVALID_TRACKDIR,
TRACKDIR_X_SW, TRACKDIR_Y_NW, TRACKDIR_LOWER_W, TRACKDIR_UPPER_W, TRACKDIR_RIGHT_N, TRACKDIR_LEFT_N
}
| const byte _signal_against_trackdir[TRACKDIR_END] |
{
0x4, 0x4, 0x4, 0x1, 0x8, 0x2, 0, 0,
0x8, 0x8, 0x8, 0x2, 0x4, 0x1
}
| const byte _signal_along_trackdir[TRACKDIR_END] |
{
0x8, 0x8, 0x8, 0x2, 0x4, 0x1, 0, 0,
0x4, 0x4, 0x4, 0x1, 0x8, 0x2
}
| const byte _signal_on_track[] |
{
0xC, 0xC, 0xC, 0x3, 0xC, 0x3
}
| const TrackdirBits _track_crosses_trackdirs[TRACKDIR_END] |
{
TRACKDIR_BIT_Y_SE | TRACKDIR_BIT_Y_NW,
TRACKDIR_BIT_X_NE | TRACKDIR_BIT_X_SW,
TRACKDIR_BIT_RIGHT_N | TRACKDIR_BIT_RIGHT_S | TRACKDIR_BIT_LEFT_N | TRACKDIR_BIT_LEFT_S,
TRACKDIR_BIT_RIGHT_N | TRACKDIR_BIT_RIGHT_S | TRACKDIR_BIT_LEFT_N | TRACKDIR_BIT_LEFT_S,
TRACKDIR_BIT_UPPER_W | TRACKDIR_BIT_UPPER_E | TRACKDIR_BIT_LOWER_W | TRACKDIR_BIT_LOWER_E,
TRACKDIR_BIT_UPPER_W | TRACKDIR_BIT_UPPER_E | TRACKDIR_BIT_LOWER_W | TRACKDIR_BIT_LOWER_E
}
| const TrackBits _track_crosses_tracks[] |
{
TRACK_BIT_Y,
TRACK_BIT_X,
TRACK_BIT_VERT,
TRACK_BIT_VERT,
TRACK_BIT_HORZ,
TRACK_BIT_HORZ
}
| const Trackdir _track_direction_to_trackdir[][DIR_END] |
{
{INVALID_TRACKDIR, TRACKDIR_X_NE, INVALID_TRACKDIR, INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_X_SW, INVALID_TRACKDIR, INVALID_TRACKDIR},
{INVALID_TRACKDIR, INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_Y_SE, INVALID_TRACKDIR, INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_Y_NW},
{INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_UPPER_E, INVALID_TRACKDIR, INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_UPPER_W, INVALID_TRACKDIR},
{INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_LOWER_E, INVALID_TRACKDIR, INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_LOWER_W, INVALID_TRACKDIR},
{TRACKDIR_LEFT_N, INVALID_TRACKDIR, INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_LEFT_S, INVALID_TRACKDIR, INVALID_TRACKDIR, INVALID_TRACKDIR},
{TRACKDIR_RIGHT_N, INVALID_TRACKDIR, INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_RIGHT_S, INVALID_TRACKDIR, INVALID_TRACKDIR, INVALID_TRACKDIR}
}
| const Trackdir _track_enterdir_to_trackdir[][DIAGDIR_END] |
{
{TRACKDIR_X_NE, INVALID_TRACKDIR, TRACKDIR_X_SW, INVALID_TRACKDIR},
{INVALID_TRACKDIR, TRACKDIR_Y_SE, INVALID_TRACKDIR, TRACKDIR_Y_NW},
{INVALID_TRACKDIR, TRACKDIR_UPPER_E, TRACKDIR_UPPER_W, INVALID_TRACKDIR},
{TRACKDIR_LOWER_E, INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_LOWER_W},
{TRACKDIR_LEFT_N, TRACKDIR_LEFT_S, INVALID_TRACKDIR, INVALID_TRACKDIR},
{INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_RIGHT_S, TRACKDIR_RIGHT_N}
}
| const Trackdir _track_exitdir_to_trackdir[][DIAGDIR_END] |
{
{TRACKDIR_X_NE, INVALID_TRACKDIR, TRACKDIR_X_SW, INVALID_TRACKDIR},
{INVALID_TRACKDIR, TRACKDIR_Y_SE, INVALID_TRACKDIR, TRACKDIR_Y_NW},
{TRACKDIR_UPPER_E, INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_UPPER_W},
{INVALID_TRACKDIR, TRACKDIR_LOWER_E, TRACKDIR_LOWER_W, INVALID_TRACKDIR},
{INVALID_TRACKDIR, INVALID_TRACKDIR, TRACKDIR_LEFT_S, TRACKDIR_LEFT_N},
{TRACKDIR_RIGHT_N, TRACKDIR_RIGHT_S, INVALID_TRACKDIR, INVALID_TRACKDIR}
}
| const DiagDirection _trackdir_to_exitdir[TRACKDIR_END] |
{
DIAGDIR_NE, DIAGDIR_SE, DIAGDIR_NE, DIAGDIR_SE, DIAGDIR_SW, DIAGDIR_SE, DIAGDIR_NE, DIAGDIR_NE,
DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NW, DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NE,
}
1.7.1