tron@2186: /* $Id$ */ tron@2186: rubidium@8634: /** @file signal_func.h Functions related to signals. */ celestar@2274: rubidium@8634: #ifndef SIGNAL_FUNC_H rubidium@8634: #define SIGNAL_FUNC_H celestar@2254: rubidium@8634: #include "track_type.h" smatz@8734: #include "tile_type.h" smatz@8734: #include "direction_type.h" smatz@8734: #include "track_type.h" smatz@8796: #include "player_type.h" matthijs@1942: matthijs@1942: /** matthijs@1942: * Maps a trackdir to the bit that stores its status in the map arrays, in the matthijs@1942: * direction along with the trackdir. matthijs@1942: */ rubidium@6488: static inline byte SignalAlongTrackdir(Trackdir trackdir) rubidium@6488: { rubidium@6488: extern const byte _signal_along_trackdir[TRACKDIR_END]; rubidium@6488: return _signal_along_trackdir[trackdir]; rubidium@6488: } matthijs@1942: matthijs@1942: /** matthijs@1942: * Maps a trackdir to the bit that stores its status in the map arrays, in the matthijs@1942: * direction against the trackdir. matthijs@1942: */ rubidium@6488: static inline byte SignalAgainstTrackdir(Trackdir trackdir) rubidium@6488: { matthijs@1948: extern const byte _signal_against_trackdir[TRACKDIR_END]; matthijs@1948: return _signal_against_trackdir[trackdir]; matthijs@1948: } matthijs@1942: matthijs@1942: /** matthijs@1942: * Maps a Track to the bits that store the status of the two signals that can matthijs@1942: * be present on the given track. matthijs@1942: */ rubidium@6488: static inline byte SignalOnTrack(Track track) rubidium@6488: { matthijs@1948: extern const byte _signal_on_track[TRACK_END]; matthijs@1948: return _signal_on_track[track]; matthijs@1948: } matthijs@1942: smatz@8796: bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner); smatz@8796: void SetSignalsOnBothDir(TileIndex tile, Track track, Owner owner); smatz@8802: void AddTrackToSignalBuffer(TileIndex tile, Track track, Owner owner); smatz@8802: void AddSideToSignalBuffer(TileIndex tile, DiagDirection side, Owner owner); smatz@8802: void UpdateSignalsInBuffer(); smatz@8734: rubidium@8634: #endif /* SIGNAL_FUNC_H */