summaryrefslogtreecommitdiff
path: root/newgrf_station.c
diff options
context:
space:
mode:
Diffstat (limited to 'newgrf_station.c')
-rw-r--r--newgrf_station.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/newgrf_station.c b/newgrf_station.c
index 18a138602..ef4d59ae4 100644
--- a/newgrf_station.c
+++ b/newgrf_station.c
@@ -640,3 +640,22 @@ bool DrawStationTile(int x, int y, RailType railtype, Axis axis, StationClassID
return true;
}
+/* Check if a rail station tile is traversable.
+ * XXX This could be cached (during build) in the map array to save on all the dereferencing */
+bool IsStationTileBlocked(TileIndex tile)
+{
+ const Station *st;
+ const StationSpec *statspec;
+ uint specindex;
+
+ if (!IsCustomStationSpecIndex(tile)) return false;
+
+ st = GetStationByTile(tile);
+ specindex = GetCustomStationSpecIndex(tile);
+ if (specindex >= st->num_specs) return false;
+
+ statspec = st->speclist[specindex].spec;
+ if (statspec == NULL) return false;
+
+ return HASBIT(statspec->blocked, GetStationGfx(tile));
+}