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