From 18e7ec6b3e4786af0488ccae32bf83e59834fbd4 Mon Sep 17 00:00:00 2001 From: yexo Date: Thu, 21 Jan 2010 13:34:05 +0000 Subject: (svn r18876) -Codechange: make sure m4 is always 0 for non-railroad station tiles --- src/station_cmd.cpp | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) (limited to 'src/station_cmd.cpp') diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 37746da54..6b5163c8b 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 */ -- cgit v1.2.3-54-g00ecf