summaryrefslogtreecommitdiff
path: root/src/rail_map.h
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2008-01-09 23:00:59 +0000
committersmatz <smatz@openttd.org>2008-01-09 23:00:59 +0000
commitf44a9a5d5b468496fe92473e3bbd6a556efabf12 (patch)
tree3de62d8fa49bd51c2036af4c35d3e035e59db6ea /src/rail_map.h
parent6c954cad5f73f20fad3804d16f1852c7b52d3ad7 (diff)
downloadopenttd-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.h12
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.