Add implementation of multi-aspect signalling and GRF support
Requires realistic braking See: #247
This commit is contained in:
@@ -352,7 +352,7 @@ static inline bool IsPresignalProgrammable(TileIndex t, Track track)
|
||||
/** One-way signals can't be passed the 'wrong' way. */
|
||||
static inline bool IsOnewaySignal(TileIndex t, Track track)
|
||||
{
|
||||
return GetSignalType(t, track) != SIGTYPE_PBS;
|
||||
return IsOnewaySignal(GetSignalType(t, track));
|
||||
}
|
||||
|
||||
static inline void CycleSignalSide(TileIndex t, Track track)
|
||||
@@ -378,6 +378,20 @@ static inline void SetSignalVariant(TileIndex t, Track track, SignalVariant v)
|
||||
if (track == INVALID_TRACK) SB(_m[t].m2, 7, 1, v);
|
||||
}
|
||||
|
||||
static inline uint8 GetSignalAspect(TileIndex t, Track track)
|
||||
{
|
||||
assert_tile(GetRailTileType(t) == RAIL_TILE_SIGNALS, t);
|
||||
byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 3 : 0;
|
||||
return GB(_me[t].m7, pos, 3);
|
||||
}
|
||||
|
||||
static inline void SetSignalAspect(TileIndex t, Track track, uint8 aspect)
|
||||
{
|
||||
assert_tile(GetRailTileType(t) == RAIL_TILE_SIGNALS, t);
|
||||
byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 3 : 0;
|
||||
SB(_me[t].m7, pos, 3, aspect);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the states of the signals (Along/AgainstTrackDir)
|
||||
* @param tile the tile to set the states for
|
||||
|
Reference in New Issue
Block a user