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 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

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 187 of file rail.cpp.

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

Referenced by SetDefaultRailGui().

RailTypes GetCompanyRailtypes ( const CompanyID  c  ) 

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 195 of file rail.cpp.

References _date, _settings_game, DAYS_IN_YEAR, GameSettings::game_creation, HasBit(), GameCreationSettings::landscape, RAILTYPE_END, RAILTYPES_NONE, RAILVEH_WAGON, SetBit(), and VEH_TRAIN.

Referenced by 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 217 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 177 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 182 of file rail.cpp.

References 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 Sun Nov 14 14:42:06 2010 for OpenTTD by  doxygen 1.6.1