diff options
author | smatz <smatz@openttd.org> | 2008-01-09 23:00:59 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2008-01-09 23:00:59 +0000 |
commit | f44a9a5d5b468496fe92473e3bbd6a556efabf12 (patch) | |
tree | 3de62d8fa49bd51c2036af4c35d3e035e59db6ea /src/rail_map.h | |
parent | 6c954cad5f73f20fad3804d16f1852c7b52d3ad7 (diff) | |
download | openttd-f44a9a5d5b468496fe92473e3bbd6a556efabf12.tar.xz |
(svn r11802) -Fix [FS#716]: do not crash trains when leaving depot to a very long track
-Codechange: use dedicated pathfinder for signal updating, resulting in better performance and possible future improvements
Diffstat (limited to 'src/rail_map.h')
-rw-r--r-- | src/rail_map.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/rail_map.h b/src/rail_map.h index 9b9bc16ef..d4f63c72b 100644 --- a/src/rail_map.h +++ b/src/rail_map.h @@ -375,6 +375,18 @@ static inline SignalState GetSignalStateByTrackdir(TileIndex tile, Trackdir trac SIGNAL_STATE_GREEN : SIGNAL_STATE_RED; } +/** + * Sets the state of the signal along the given trackdir. + */ +static inline void SetSignalStateByTrackdir(TileIndex tile, Trackdir trackdir, SignalState state) +{ + if (state == SIGNAL_STATE_GREEN) { // set 1 + SetSignalStates(tile, GetSignalStates(tile) | SignalAlongTrackdir(trackdir)); + } else { + SetSignalStates(tile, GetSignalStates(tile) & ~SignalAlongTrackdir(trackdir)); + } +} + /** * Return the rail type of tile, or INVALID_RAILTYPE if this is no rail tile. |