diff --git a/docs/landscape_grid.html b/docs/landscape_grid.html
index af62d78234..833ca661c5 100644
--- a/docs/landscape_grid.html
+++ b/docs/landscape_grid.html
@@ -206,7 +206,7 @@ the array so you can quickly see what is used and what is not.
-inherit- |
-inherit- |
XXXX OOOO |
- ~~~~ ~~~~ |
+ OOOO OOOO |
~~~~ ~XXX |
OOXX XXXX |
XXOX XXXX |
@@ -217,7 +217,7 @@ the array so you can quickly see what is used and what is not.
-inherit- |
-inherit- |
OOOO OOXX |
- ~~~~ ~~~~ |
+ OOOO OOOO |
~~~~ ~XXX |
OOXX XOXX |
OOOO OOOO |
@@ -228,7 +228,7 @@ the array so you can quickly see what is used and what is not.
-inherit- |
-inherit- |
OOOO OOOO |
- ~~~~ ~~~~ |
+ OOOO OOOO |
XXXX XXXX |
OOXX XOXX |
OOOO OOOO |
@@ -239,7 +239,7 @@ the array so you can quickly see what is used and what is not.
-inherit- |
-inherit- |
OOOO OOXX |
- ~~~~ ~~~~ |
+ OOOO OOOO |
~~~~ ~~~~ |
OOXX XOXX |
OOOO OOOO |
@@ -250,7 +250,7 @@ the array so you can quickly see what is used and what is not.
-inherit- |
-inherit- |
OOOO OOOO |
- ~~~~ ~~~~ |
+ OOOO OOOO |
~~~~ ~~~~ |
OOXX XOXX |
OOOO OOOO |
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index 37746da547..6b5163c8b0 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2309,20 +2309,42 @@ static void DrawTile_Station(TileInfo *ti)
RoadTypes roadtypes;
int32 total_offset;
int32 custom_ground_offset;
+ uint32 relocation = 0;
+ const BaseStation *st = NULL;
+ const StationSpec *statspec = NULL;
if (HasStationRail(ti->tile)) {
const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile));
roadtypes = ROADTYPES_NONE;
total_offset = rti->total_offset;
custom_ground_offset = rti->custom_ground_offset;
+
+ if (IsCustomStationSpecIndex(ti->tile)) {
+ /* look for customization */
+ st = BaseStation::GetByTile(ti->tile);
+ statspec = st->speclist[GetCustomStationSpecIndex(ti->tile)].spec;
+
+ if (statspec != NULL) {
+ uint tile = GetStationGfx(ti->tile);
+
+ relocation = GetCustomStationRelocation(statspec, st, ti->tile);
+
+ if (HasBit(statspec->callback_mask, CBM_STATION_SPRITE_LAYOUT)) {
+ uint16 callback = GetStationCallback(CBID_STATION_SPRITE_LAYOUT, 0, 0, statspec, st, ti->tile);
+ if (callback != CALLBACK_FAILED) tile = (callback & ~1) + GetRailStationAxis(ti->tile);
+ }
+
+ /* Ensure the chosen tile layout is valid for this custom station */
+ if (statspec->renderdata != NULL) {
+ t = &statspec->renderdata[tile < statspec->tiles ? tile : (uint)GetRailStationAxis(ti->tile)];
+ }
+ }
+ }
} else {
roadtypes = IsRoadStop(ti->tile) ? GetRoadTypes(ti->tile) : ROADTYPES_NONE;
total_offset = 0;
custom_ground_offset = 0;
}
- uint32 relocation = 0;
- const BaseStation *st = NULL;
- const StationSpec *statspec = NULL;
Owner owner = GetTileOwner(ti->tile);
PaletteID palette;
@@ -2333,28 +2355,6 @@ static void DrawTile_Station(TileInfo *ti)
palette = PALETTE_TO_GREY;
}
- if (IsCustomStationSpecIndex(ti->tile)) {
- /* look for customization */
- st = BaseStation::GetByTile(ti->tile);
- statspec = st->speclist[GetCustomStationSpecIndex(ti->tile)].spec;
-
- if (statspec != NULL) {
- uint tile = GetStationGfx(ti->tile);
-
- relocation = GetCustomStationRelocation(statspec, st, ti->tile);
-
- if (HasBit(statspec->callback_mask, CBM_STATION_SPRITE_LAYOUT)) {
- uint16 callback = GetStationCallback(CBID_STATION_SPRITE_LAYOUT, 0, 0, statspec, st, ti->tile);
- if (callback != CALLBACK_FAILED) tile = (callback & ~1) + GetRailStationAxis(ti->tile);
- }
-
- /* Ensure the chosen tile layout is valid for this custom station */
- if (statspec->renderdata != NULL) {
- t = &statspec->renderdata[tile < statspec->tiles ? tile : (uint)GetRailStationAxis(ti->tile)];
- }
- }
- }
-
if (t == NULL || t->seq == NULL) t = &_station_display_datas[GetStationType(ti->tile)][GetStationGfx(ti->tile)];
/* don't show foundation for docks */
diff --git a/src/station_map.h b/src/station_map.h
index 52e72657d2..0ab951b317 100644
--- a/src/station_map.h
+++ b/src/station_map.h
@@ -401,7 +401,7 @@ static inline TileIndexDiffC GetDockOffset(TileIndex t)
static inline bool IsCustomStationSpecIndex(TileIndex t)
{
- assert(IsTileType(t, MP_STATION));
+ assert(HasStationTileRail(t));
return _m[t].m4 != 0;
}