OpenTTD Source 20250205-master-gfd85ab1e2c
newgrf_railtype.cpp File Reference

NewGRF handling of rail types. More...

#include "stdafx.h"
#include "core/container_func.hpp"
#include "debug.h"
#include "newgrf_railtype.h"
#include "timer/timer_game_calendar.h"
#include "depot_base.h"
#include "town.h"
#include "tunnelbridge_map.h"
#include "safeguards.h"

Go to the source code of this file.

Functions

SpriteID GetCustomRailSprite (const RailTypeInfo *rti, TileIndex tile, RailTypeSpriteGroup rtsg, TileContext context, uint *num_results)
 Get the sprite to draw for the given tile.
 
SpriteID GetCustomSignalSprite (const RailTypeInfo *rti, TileIndex tile, SignalType type, SignalVariant var, SignalState state, bool gui)
 Get the sprite to draw for a given signal.
 
RailType GetRailTypeTranslation (uint8_t railtype, const GRFFile *grffile)
 Translate an index to the GRF-local railtype-translation table into a RailType.
 
uint8_t GetReverseRailTypeTranslation (RailType railtype, const GRFFile *grffile)
 Perform a reverse railtype lookup to get the GRF internal ID.
 
void ConvertRailTypes ()
 Test if any saved rail type labels are different to the currently loaded rail types.
 
void SetCurrentRailTypeLabelList ()
 Populate railtype label list with current values.
 
void ClearRailTypeLabelList ()
 

Variables

std::vector< LabelObject< RailTypeLabel > > _railtype_list
 

Detailed Description

NewGRF handling of rail types.

Definition in file newgrf_railtype.cpp.

Function Documentation

◆ ClearRailTypeLabelList()

void ClearRailTypeLabelList ( )

Definition at line 244 of file newgrf_railtype.cpp.

◆ ConvertRailTypes()

void ConvertRailTypes ( )

Test if any saved rail type labels are different to the currently loaded rail types.

Rail types stored in the map will be converted if necessary.

Definition at line 185 of file newgrf_railtype.cpp.

References GetRailType(), GetRailTypeByLabel(), GetTileType(), GetTunnelBridgeTransportType(), HasStationRail(), INVALID_RAILTYPE, IsLevelCrossing(), Map::Iterate(), MP_RAILWAY, MP_ROAD, MP_STATION, MP_TUNNELBRIDGE, RAILTYPE_RAIL, SetRailType(), and TRANSPORT_RAIL.

Referenced by AfterLoadLabelMaps().

◆ GetCustomRailSprite()

SpriteID GetCustomRailSprite ( const RailTypeInfo rti,
TileIndex  tile,
RailTypeSpriteGroup  rtsg,
TileContext  context,
uint *  num_results 
)

Get the sprite to draw for the given tile.

Parameters
rtiThe rail type data (spec).
tileThe tile to get the sprite for.
rtsgThe type of sprite to draw.
contextWhere are we drawing the tile?
[out]num_resultsIf not nullptr, return the number of sprites in the spriteset.
Returns
The sprite to draw.

Definition at line 97 of file newgrf_railtype.cpp.

References RailTypeInfo::group, and SpriteGroup::Resolve().

Referenced by DrawBridgeMiddle(), DrawStationTile(), DrawTile_Road(), DrawTile_TunnelBridge(), DrawTrackDetails(), GetPylonBase(), and GetWireBase().

◆ GetCustomSignalSprite()

SpriteID GetCustomSignalSprite ( const RailTypeInfo rti,
TileIndex  tile,
SignalType  type,
SignalVariant  var,
SignalState  state,
bool  gui 
)

Get the sprite to draw for a given signal.

Parameters
rtiThe rail type data (spec).
tileThe tile to get the sprite for.
typeSignal type.
varSignal variant.
stateSignal state.
guiIs the sprite being used on the map or in the GUI?
Returns
The sprite to draw.

Definition at line 122 of file newgrf_railtype.cpp.

References RailTypeInfo::group, SpriteGroup::Resolve(), RTSG_SIGNALS, and TCX_NORMAL.

◆ GetRailTypeTranslation()

RailType GetRailTypeTranslation ( uint8_t  railtype,
const GRFFile grffile 
)

Translate an index to the GRF-local railtype-translation table into a RailType.

Parameters
railtypeIndex into GRF-local translation table.
grffileOriginating GRF file.
Returns
RailType or INVALID_RAILTYPE if the railtype is unknown.

Definition at line 142 of file newgrf_railtype.cpp.

References GetRailTypeByLabel(), GetRailTypeInfo(), INVALID_RAILTYPE, RAILTYPE_END, and GRFFile::railtype_list.

◆ GetReverseRailTypeTranslation()

uint8_t GetReverseRailTypeTranslation ( RailType  railtype,
const GRFFile grffile 
)

Perform a reverse railtype lookup to get the GRF internal ID.

Parameters
railtypeThe global (OpenTTD) railtype.
grffileThe GRF to do the lookup for.
Returns
the GRF internal ID.

Definition at line 164 of file newgrf_railtype.cpp.

References find_index(), GetRailTypeInfo(), RailTypeInfo::label, and GRFFile::railtype_list.

Referenced by StationScopeResolver::GetVariable().

◆ SetCurrentRailTypeLabelList()

void SetCurrentRailTypeLabelList ( )

Populate railtype label list with current values.

Definition at line 235 of file newgrf_railtype.cpp.

References GetRailTypeInfo(), RailTypeInfo::label, RAILTYPE_BEGIN, and RAILTYPE_END.

Referenced by AfterLoadLabelMaps(), and GenerateWorld().

Variable Documentation

◆ _railtype_list

std::vector<LabelObject<RailTypeLabel> > _railtype_list

Definition at line 179 of file newgrf_railtype.cpp.