OpenTTD Source 20241224-master-gf74b0cf984
signal_func.h File Reference

Functions related to signals. More...

#include "track_type.h"
#include "tile_type.h"
#include "direction_type.h"
#include "company_type.h"

Go to the source code of this file.

Enumerations

enum  SigSegState { SIGSEG_FREE , SIGSEG_FULL , SIGSEG_PBS }
 State of the signal segment. More...
 

Functions

uint8_t SignalAlongTrackdir (Trackdir trackdir)
 Maps a trackdir to the bit that stores its status in the map arrays, in the direction along with the trackdir.
 
uint8_t SignalAgainstTrackdir (Trackdir trackdir)
 Maps a trackdir to the bit that stores its status in the map arrays, in the direction against the trackdir.
 
uint8_t SignalOnTrack (Track track)
 Maps a Track to the bits that store the status of the two signals that can be present on the given track.
 
SigSegState UpdateSignalsOnSegment (TileIndex tile, DiagDirection side, Owner owner)
 Update signals, starting at one side of a tile Will check tile next to this at opposite side too.
 
void SetSignalsOnBothDir (TileIndex tile, Track track, Owner owner)
 Update signals at segments that are at both ends of given (existent or non-existent) track.
 
void AddTrackToSignalBuffer (TileIndex tile, Track track, Owner owner)
 Add track to signal update buffer.
 
void AddSideToSignalBuffer (TileIndex tile, DiagDirection side, Owner owner)
 Add side of tile to signal update buffer.
 
void UpdateSignalsInBuffer ()
 Update signals in buffer Called from 'outside'.
 

Detailed Description

Functions related to signals.

Definition in file signal_func.h.

Enumeration Type Documentation

◆ SigSegState

State of the signal segment.

Enumerator
SIGSEG_FREE 

Free and has no pre-signal exits or at least one green exit.

SIGSEG_FULL 

Occupied by a train.

SIGSEG_PBS 

Segment is a PBS segment.

Definition at line 49 of file signal_func.h.

Function Documentation

◆ AddSideToSignalBuffer()

void AddSideToSignalBuffer ( TileIndex  tile,
DiagDirection  side,
Owner  owner 
)

Add side of tile to signal update buffer.

Parameters
tiletile where we start
sideside of tile
ownerowner whose signals we will update

Definition at line 624 of file signal.cpp.

References _globset, _last_owner, INVALID_OWNER, SIG_GLOB_UPDATE, and UpdateSignalsInBuffer().

Referenced by CmdBuildBridge(), CmdBuildTrainDepot(), CmdBuildTunnel(), DoClearBridge(), DoClearTunnel(), and FreeTrainTrackReservation().

◆ AddTrackToSignalBuffer()

void AddTrackToSignalBuffer ( TileIndex  tile,
Track  track,
Owner  owner 
)

Add track to signal update buffer.

Parameters
tiletile where we start
tracktrack at which ends we will update signals
ownerowner whose signals we will update

Definition at line 592 of file signal.cpp.

References _globset, _last_owner, DIAGDIR_NE, DIAGDIR_NW, DIAGDIR_SE, DIAGDIR_SW, INVALID_OWNER, SIG_GLOB_UPDATE, and UpdateSignalsInBuffer().

Referenced by ChangeOwnershipOfCompanyItems(), CmdBuildRailStation(), CmdBuildSingleRail(), CmdBuildSingleSignal(), CmdRemoveSingleRail(), CmdRemoveSingleSignal(), RemoveFromRailBaseStation(), and SetSignalsOnBothDir().

◆ SetSignalsOnBothDir()

void SetSignalsOnBothDir ( TileIndex  tile,
Track  track,
Owner  owner 
)

Update signals at segments that are at both ends of given (existent or non-existent) track.

See also
UpdateSignalsInBuffer()
Parameters
tiletile where we start
tracktrack at which ends we will update signals
ownerowner whose signals we will update

Definition at line 668 of file signal.cpp.

References _globset, AddTrackToSignalBuffer(), and UpdateSignalsInBuffer().

Referenced by DeleteLastWagon().

◆ SignalAgainstTrackdir()

uint8_t SignalAgainstTrackdir ( Trackdir  trackdir)
inline

Maps a trackdir to the bit that stores its status in the map arrays, in the direction against the trackdir.

Definition at line 32 of file signal_func.h.

References TRACKDIR_END.

Referenced by CmdSignalTrackHelper().

◆ SignalAlongTrackdir()

uint8_t SignalAlongTrackdir ( Trackdir  trackdir)
inline

Maps a trackdir to the bit that stores its status in the map arrays, in the direction along with the trackdir.

Definition at line 22 of file signal_func.h.

References TRACKDIR_END.

Referenced by CmdSignalTrackHelper(), GetSignalStateByTrackdir(), HasSignalOnTrackdir(), and SetSignalStateByTrackdir().

◆ SignalOnTrack()

uint8_t SignalOnTrack ( Track  track)
inline

Maps a Track to the bits that store the status of the two signals that can be present on the given track.

Definition at line 42 of file signal_func.h.

References TRACK_END.

Referenced by CmdBuildSingleSignal(), CmdRemoveSingleSignal(), CmdSignalTrackHelper(), and HasSignalOnTrack().

◆ UpdateSignalsInBuffer()

◆ UpdateSignalsOnSegment()

SigSegState UpdateSignalsOnSegment ( TileIndex  tile,
DiagDirection  side,
Owner  owner 
)

Update signals, starting at one side of a tile Will check tile next to this at opposite side too.

See also
UpdateSignalsInBuffer()
Parameters
tiletile where we start
sideside of tile
ownerowner whose signals we will update
Returns
the state of the signal segment

Definition at line 650 of file signal.cpp.

References _globset, and UpdateSignalsInBuffer().

Referenced by CheckTrainStayInDepot(), DeleteLastWagon(), ReverseTrainDirection(), TrainController(), and VehicleEnterDepot().