rail.cpp File Reference

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)
 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 []

Detailed Description

Implementation of rail specific functions.

Definition in file rail.cpp.


Function Documentation

RailTypes AddDateIntroducedRailTypes ( RailTypes  current,
Date  date 
)

Add the rail types that are to be introduced at the given date.

Parameters:
current The currently available railtypes.
date The date for the introduction comparisions.
Returns:
The rail types that should be available when date introduced rail types are taken into account as well.

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, RAILTYPE_BEGIN, and RAILTYPE_END.

Referenced by AddDateIntroducedRailTypes(), CheckRailIntroduction(), GetCompanyRailtypes(), GetRailTypeDropDownList(), and NewVehicleAvailable().

RailType GetBestRailtype ( const CompanyID  company  ) 

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

Parameters:
company the company "in action"
Returns:
The "best" railtype a company has available

Definition at line 208 of file rail.cpp.

References HasRailtypeAvail(), RAILTYPE_ELECTRIC, RAILTYPE_MAGLEV, RAILTYPE_MONO, and RAILTYPE_RAIL.

Referenced by SetDefaultRailGui().

RailTypes GetCompanyRailtypes ( CompanyID  company  ) 

Get the rail types the given company can build.

Parameters:
c the company to get the rail types for.
Returns:
the rail types.

Definition at line 255 of file rail.cpp.

References _date, _settings_game, AddDateIntroducedRailTypes(), DAYS_IN_YEAR, GameSettings::game_creation, GetRailTypeInfo(), HasBit(), RailtypeInfo::introduces_railtypes, GameCreationSettings::landscape, RAILTYPE_END, RAILTYPES_NONE, RAILVEH_WAGON, and VEH_TRAIN.

Referenced by AfterLoadGame(), DoStartupNewCompany(), and SettingsDisableElrail().

RailType GetRailTypeByLabel ( RailTypeLabel  label  ) 

Get the rail type for a given label.

Parameters:
label the railtype label.
Returns:
the railtype.

Definition at line 282 of file rail.cpp.

References GetRailTypeInfo(), INVALID_RAILTYPE, RailtypeInfo::label, RAILTYPE_BEGIN, and RAILTYPE_END.

bool HasRailtypeAvail ( const CompanyID  company,
const RailType  railtype 
)

Finds out if a company has a certain railtype available.

Parameters:
company the company in question
railtype requested RailType
Returns:
true if company has requested RailType available

Definition at line 186 of file rail.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), and HasBit().

Referenced by GetBestRailtype(), AIRail::IsRailTypeAvailable(), SetDefaultRailGui(), and ValParamRailtype().

bool ValParamRailtype ( const RailType  rail  ) 

Validate functions for rail building.

Parameters:
rail the railtype to check.
Returns:
true if the current company may build the rail.

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().


Variable Documentation

const TrackBits _corner_to_trackbits[]
const Trackdir _dir_to_diag_trackdir[]
const TrackdirBits _exitdir_reaches_trackdirs[]
const Trackdir _next_trackdir[TRACKDIR_END]
const byte _signal_against_trackdir[TRACKDIR_END]
Initial value:
 {
  0x4, 0x4, 0x4, 0x1, 0x8, 0x2, 0, 0,
  0x8, 0x8, 0x8, 0x2, 0x4, 0x1
}
const byte _signal_along_trackdir[TRACKDIR_END]
Initial value:
 {
  0x8, 0x8, 0x8, 0x2, 0x4, 0x1, 0, 0,
  0x4, 0x4, 0x4, 0x1, 0x8, 0x2
}
const byte _signal_on_track[]
Initial value:
 {
  0xC, 0xC, 0xC, 0x3, 0xC, 0x3
}
const TrackdirBits _track_crosses_trackdirs[TRACKDIR_END]
const TrackBits _track_crosses_tracks[]
Initial value:
 {
  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]
Initial value:
 {
  {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]
const Trackdir _track_exitdir_to_trackdir[][DIAGDIR_END]
const DiagDirection _trackdir_to_exitdir[TRACKDIR_END]
Initial value:
 {
  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,
}

Generated on Fri Mar 18 23:17:48 2011 for OpenTTD by  doxygen 1.6.1