summaryrefslogtreecommitdiff
path: root/rail_map.h
diff options
context:
space:
mode:
authorcelestar <celestar@openttd.org>2006-04-12 09:36:27 +0000
committercelestar <celestar@openttd.org>2006-04-12 09:36:27 +0000
commitce320ceb55ab150b4066d139c98241dc20e5ea0f (patch)
tree066651be5c87829c223c0fbe9b4d2d77c77bbe76 /rail_map.h
parent3207d63244e3e2c3c60b281d41a41d74d3a6cadd (diff)
downloadopenttd-ce320ceb55ab150b4066d139c98241dc20e5ea0f.tar.xz
(svn r4378) -Add and make use of an accessor function two-way => one-way => one-way => two-way signal cycling
Diffstat (limited to 'rail_map.h')
-rw-r--r--rail_map.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/rail_map.h b/rail_map.h
index da72d0250..f3a7a4626 100644
--- a/rail_map.h
+++ b/rail_map.h
@@ -174,6 +174,17 @@ static inline bool IsPresignalExit(TileIndex t)
return GetSignalType(t) == SIGTYPE_EXIT || GetSignalType(t) == SIGTYPE_COMBO;
}
+static inline void CycleSignalSide(TileIndex t, Track track)
+{
+ byte sig;
+ byte pos = 6;
+ if (track == TRACK_LOWER || track == TRACK_RIGHT) pos = 4;
+
+ sig = GB(_m[t].m3, pos, 2);
+ if (--sig == 0) sig = 3;
+ SB(_m[t].m3, pos, 2, sig);
+}
+
typedef enum SignalVariant {
SIG_ELECTRIC = 0,