diff options
author | frosch <frosch@openttd.org> | 2012-07-15 16:17:22 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2012-07-15 16:17:22 +0000 |
commit | c8cb096533fbb943e455c5e4c2f13ffa2a007c8b (patch) | |
tree | dd4c6d34c8d669e772c681f51d59a9c05736bb95 /src | |
parent | 03b6ad93836c43f9be08468635fa0a914edbfe09 (diff) | |
download | openttd-c8cb096533fbb943e455c5e4c2f13ffa2a007c8b.tar.xz |
(svn r24402) -Fix [FS#5243]: Station properties 11 and 14 were combined incorrectly.
Diffstat (limited to 'src')
-rw-r--r-- | src/elrail.cpp | 7 | ||||
-rw-r--r-- | src/newgrf_station.cpp | 23 | ||||
-rw-r--r-- | src/station_cmd.cpp | 2 | ||||
-rw-r--r-- | src/station_func.h | 4 |
4 files changed, 25 insertions, 11 deletions
diff --git a/src/elrail.cpp b/src/elrail.cpp index 9aedfc6e5..8aea17aae 100644 --- a/src/elrail.cpp +++ b/src/elrail.cpp @@ -111,7 +111,6 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override) case MP_STATION: 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)); default: @@ -409,7 +408,8 @@ static void DrawCatenaryRailway(const TileInfo *ti) } } - if (PPPallowed[i] != 0 && HasBit(PCPstatus, i) && !HasBit(OverridePCP, i)) { + if (PPPallowed[i] != 0 && HasBit(PCPstatus, i) && !HasBit(OverridePCP, i) && + (!IsRailStationTile(ti->tile) || CanStationTileHavePylons(ti->tile))) { for (Direction k = DIR_BEGIN; k < DIR_END; k++) { byte temp = PPPorder[i][GetTLG(ti->tile)][k]; @@ -443,6 +443,9 @@ static void DrawCatenaryRailway(const TileInfo *ti) if (height <= GetTileMaxZ(ti->tile) + 1) return; } + /* Don't draw a wire if the station tile does not want any */ + if (IsRailStationTile(ti->tile) && !CanStationTileHaveWires(ti->tile)) return; + SpriteID wire_normal = GetWireBase(ti->tile); SpriteID wire_halftile = (halftile_corner != CORNER_INVALID) ? GetWireBase(ti->tile, TCX_UPPER_HALFTILE) : wire_normal; Track halftile_track; diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index 57ff64bdf..cea387879 100644 --- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -895,18 +895,29 @@ bool IsStationTileBlocked(TileIndex tile) } /** - * Check if a rail station tile can be electrified. + * Check if a rail station tile shall have pylons when electrified. * @param tile %Tile to test. - * @return Tile can be electrified. + * @return Tile shall have pylons. * @note This could be cached (during build) in the map array to save on all the dereferencing. */ -bool IsStationTileElectrifiable(TileIndex tile) +bool CanStationTileHavePylons(TileIndex tile) { const StationSpec *statspec = GetStationSpec(tile); + uint gfx = GetStationGfx(tile); + /* Default stations do not draw pylons under roofs (gfx >= 4) */ + return statspec != NULL ? HasBit(statspec->pylons, gfx) : gfx < 4; +} - return statspec == NULL || - HasBit(statspec->pylons, GetStationGfx(tile)) || - !HasBit(statspec->wires, GetStationGfx(tile)); +/** + * Check if a rail station tile shall have wires when electrified. + * @param tile %Tile to test. + * @return Tile shall have wires. + * @note This could be cached (during build) in the map array to save on all the dereferencing. + */ +bool CanStationTileHaveWires(TileIndex tile) +{ + const StationSpec *statspec = GetStationSpec(tile); + return statspec == NULL || !HasBit(statspec->wires, GetStationGfx(tile)); } /** Wrapper for animation control, see #GetStationCallback. */ diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index b06d8556b..0480d755a 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2774,7 +2774,7 @@ draw_default_foundation: } } - if (HasStationRail(ti->tile) && HasCatenaryDrawn(GetRailType(ti->tile)) && IsStationTileElectrifiable(ti->tile)) DrawCatenary(ti); + if (HasStationRail(ti->tile) && HasCatenaryDrawn(GetRailType(ti->tile))) DrawCatenary(ti); if (HasBit(roadtypes, ROADTYPE_TRAM)) { Axis axis = GetRoadStopDir(ti->tile) == DIAGDIR_NE ? AXIS_X : AXIS_Y; diff --git a/src/station_func.h b/src/station_func.h index 3b33002b9..233ffee30 100644 --- a/src/station_func.h +++ b/src/station_func.h @@ -39,8 +39,8 @@ void DeleteOilRig(TileIndex t); /* Check if a rail station tile is traversable. */ bool IsStationTileBlocked(TileIndex tile); -/* Check if a rail station tile is electrifiable. */ -bool IsStationTileElectrifiable(TileIndex tile); +bool CanStationTileHavePylons(TileIndex tile); +bool CanStationTileHaveWires(TileIndex tile); void UpdateAirportsNoise(); |