(svn r16938) -Codechange: introduce helper function to tell whether a tile is either a rail station or rail waypoint tile

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
rubidium 15 years ago
parent 07447a1766
commit 2c6b5237f6

@ -17,7 +17,7 @@
if (!::IsValidTile(tile)) return false;
return (::IsTileType(tile, MP_RAILWAY) && !::IsRailDepot(tile)) ||
(::IsRailwayStationTile(tile) && !::IsStationTileBlocked(tile)) || ::IsLevelCrossingTile(tile);
(::HasStationTileRail(tile) && !::IsStationTileBlocked(tile)) || ::IsLevelCrossingTile(tile);
}
/* static */ bool AIRail::IsLevelCrossingTile(TileIndex tile)

@ -99,7 +99,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
return GetCrossingRailBits(t);
case MP_STATION:
if (!IsRailwayStation(t) && !IsRailWaypoint(t)) return TRACK_BIT_NONE;
if (!HasStationRail(t)) return TRACK_BIT_NONE;
if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
if (!IsStationTileElectrifiable(t)) return TRACK_BIT_NONE;
return TrackToTrackBits(GetRailStationTrack(t));

@ -291,7 +291,7 @@ TileIndex GetNearbyTile(byte parameter, TileIndex tile)
if (y >= 8) y -= 16;
/* Swap width and height depending on axis for railway stations */
if (IsRailwayStationTile(tile) && GetRailStationAxis(tile) == AXIS_Y) Swap(x, y);
if (HasStationTileRail(tile) && GetRailStationAxis(tile) == AXIS_Y) Swap(x, y);
/* Make sure we never roam outside of the map, better wrap in that case */
return TILE_MASK(tile + TileDiffXY(x, y));

@ -283,7 +283,7 @@ static TileIndex FindRailStationEnd(TileIndex tile, TileIndexDiff delta, bool ch
TileIndex new_tile = TILE_ADD(tile, delta);
if (!IsTileType(new_tile, MP_STATION) || GetStationIndex(new_tile) != sid) break;
if (!IsRailwayStation(new_tile) && !IsRailWaypoint(new_tile)) break;
if (!HasStationRail(new_tile)) break;
if (check_type && GetCustomStationSpecIndex(new_tile) != orig_type) break;
if (check_axis && GetRailStationAxis(new_tile) != orig_axis) break;
@ -479,7 +479,7 @@ static uint32 StationGetVariable(const ResolverObject *object, byte variable, by
case 0x68: { // Station info of nearby tiles
TileIndex nearby_tile = GetNearbyTile(parameter, tile);
if (!IsRailwayStationTile(nearby_tile)) return 0xFFFFFFFF;
if (!HasStationTileRail(nearby_tile)) return 0xFFFFFFFF;
uint32 grfid = st->speclist[GetCustomStationSpecIndex(tile)].grfid;
bool perpendicular = GetRailStationAxis(tile) != GetRailStationAxis(nearby_tile);

@ -550,7 +550,7 @@ static void NPFSaveTargetData(AyStar *as, OpenListNode *current)
static bool CanEnterTileOwnerCheck(Owner owner, TileIndex tile, DiagDirection enterdir)
{
if (IsTileType(tile, MP_RAILWAY) || // Rail tile (also rail depot)
IsRailwayStationTile(tile) || // Rail station tile
HasStationTileRail(tile) || // Rail station tile/waypoint
IsRoadDepotTile(tile) || // Road depot tile
IsStandardRoadStopTile(tile)) { // Road station tile (but not drive-through stops)
return IsTileOwner(tile, owner); // You need to own these tiles entirely to use them

@ -26,7 +26,7 @@ TrackBits GetReservedTrackbits(TileIndex t)
break;
case MP_STATION:
if (IsRailwayStation(t) || IsRailWaypoint(t)) return GetStationReservationTrackBits(t);
if (HasStationRail(t)) return GetStationReservationTrackBits(t);
break;
case MP_TUNNELBRIDGE:
@ -99,7 +99,7 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
break;
case MP_STATION:
if ((IsRailwayStation(tile) || IsRailWaypoint(tile)) && !HasStationReservation(tile)) {
if (HasStationRail(tile) && !HasStationReservation(tile)) {
SetRailwayStationReservation(tile, true);
MarkTileDirtyByTile(tile); // some GRFs need redraw after reserving track
return true;
@ -150,7 +150,7 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
break;
case MP_STATION:
if (IsRailwayStation(tile) || IsRailWaypoint(tile)) {
if (HasStationRail(tile)) {
SetRailwayStationReservation(tile, false);
MarkTileDirtyByTile(tile);
}

@ -155,7 +155,7 @@ RailType GetTileRailType(TileIndex tile)
break;
case MP_STATION:
if (IsRailwayStation(tile) || IsRailWaypoint(tile)) return GetRailType(tile);
if (HasStationRail(tile)) return GetRailType(tile);
break;
case MP_TUNNELBRIDGE:

@ -1280,7 +1280,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
case MP_RAILWAY:
break;
case MP_STATION:
if (!IsRailwayStation(tile) && !IsRailWaypoint(tile)) continue;
if (!HasStationRail(tile)) continue;
break;
case MP_ROAD:
if (!IsLevelCrossing(tile)) continue;

@ -1858,7 +1858,7 @@ static void SetDefaultRailGui()
RailType count[RAILTYPE_END];
memset(count, 0, sizeof(count));
for (TileIndex t = 0; t < MapSize(); t++) {
if (IsTileType(t, MP_RAILWAY) || IsLevelCrossingTile(t) || IsRailwayStationTile(t) ||
if (IsTileType(t, MP_RAILWAY) || IsLevelCrossingTile(t) || HasStationTileRail(t) ||
(IsTileType(t, MP_TUNNELBRIDGE) && GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL)) {
count[GetRailType(t)]++;
}

@ -959,7 +959,7 @@ bool AfterLoadGame()
break;
case MP_STATION:
if (IsRailwayStation(t)) {
if (HasStationRail(t)) {
SetRailType(t, UpdateRailType(GetRailType(t), min_rail));
}
break;

@ -343,7 +343,7 @@ static SigFlags ExploreSegment(Owner owner)
}
case MP_STATION:
if (!IsRailwayStation(tile) && !IsRailWaypoint(tile)) continue;
if (!HasStationRail(tile)) continue;
if (GetTileOwner(tile) != owner) continue;
if (DiagDirToAxis(enterdir) != GetRailStationAxis(tile)) continue; // different axis
if (IsStationTileBlocked(tile)) continue; // 'eye-candy' station tile

@ -109,6 +109,28 @@ static inline bool IsRailWaypointTile(TileIndex t)
return IsTileType(t, MP_STATION) && IsRailWaypoint(t);
}
/**
* Has this station tile a rail? In other words, is this station
* tile a rail station or rail waypoint?
* @param t the tile to check
* @pre IsTileType(t, MP_STATION)
* @return true if and only if the tile has rail
*/
static inline bool HasStationRail(TileIndex t)
{
return IsRailwayStation(t) || IsRailWaypoint(t);
}
/**
* Has this station tile a rail? In other words, is this station
* tile a rail station or rail waypoint?
* @param t the tile to check
* @return true if and only if the tile is a station tile and has rail
*/
static inline bool HasStationTileRail(TileIndex t)
{
return IsTileType(t, MP_STATION) && HasStationRail(t);
}
static inline bool IsAirport(TileIndex t)
{

Loading…
Cancel
Save