mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r4785) - Newstations: don't draw catenary on non-track tiles
This commit is contained in:
parent
8fa9ff068f
commit
cd3c141336
1
elrail.c
1
elrail.c
|
@ -111,6 +111,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
|
||||||
case MP_STATION:
|
case MP_STATION:
|
||||||
if (!IsRailwayStation(t)) return 0;
|
if (!IsRailwayStation(t)) return 0;
|
||||||
if (GetRailType(t) != RAILTYPE_ELECTRIC) return 0;
|
if (GetRailType(t) != RAILTYPE_ELECTRIC) return 0;
|
||||||
|
if (!IsStationTileElectrifiable(t)) return 0;
|
||||||
return TrackToTrackBits(GetRailStationTrack(t));
|
return TrackToTrackBits(GetRailStationTrack(t));
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -702,3 +702,23 @@ bool IsStationTileBlocked(TileIndex tile)
|
||||||
|
|
||||||
return HASBIT(statspec->blocked, GetStationGfx(tile));
|
return HASBIT(statspec->blocked, GetStationGfx(tile));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check if a rail station tile is electrifiable.
|
||||||
|
* XXX This could be cached (during build) in the map array to save on all the dereferencing */
|
||||||
|
bool IsStationTileElectrifiable(TileIndex tile)
|
||||||
|
{
|
||||||
|
const Station *st;
|
||||||
|
const StationSpec *statspec;
|
||||||
|
uint specindex;
|
||||||
|
|
||||||
|
if (!IsCustomStationSpecIndex(tile)) return true;
|
||||||
|
|
||||||
|
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->pylons, GetStationGfx(tile));
|
||||||
|
}
|
||||||
|
|
|
@ -112,6 +112,9 @@ uint16 GetStationCallback(uint16 callback, uint32 param1, uint32 param2, const S
|
||||||
/* Check if a rail station tile is traversable. */
|
/* Check if a rail station tile is traversable. */
|
||||||
bool IsStationTileBlocked(TileIndex tile);
|
bool IsStationTileBlocked(TileIndex tile);
|
||||||
|
|
||||||
|
/* Check if a rail station tile is electrifiable. */
|
||||||
|
bool IsStationTileElectrifiable(TileIndex tile);
|
||||||
|
|
||||||
/* Allocate a StationSpec to a Station. This is called once per build operation. */
|
/* Allocate a StationSpec to a Station. This is called once per build operation. */
|
||||||
int AllocateSpecToStation(const StationSpec *statspec, Station *st, bool exec);
|
int AllocateSpecToStation(const StationSpec *statspec, Station *st, bool exec);
|
||||||
|
|
||||||
|
|
|
@ -2049,7 +2049,7 @@ static void DrawTile_Station(TileInfo *ti)
|
||||||
// but this is something else. If AI builds station with 114 it looks all weird
|
// but this is something else. If AI builds station with 114 it looks all weird
|
||||||
DrawGroundSprite(image);
|
DrawGroundSprite(image);
|
||||||
|
|
||||||
if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
|
if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC && IsStationTileElectrifiable(ti->tile)) DrawCatenary(ti);
|
||||||
|
|
||||||
foreach_draw_tile_seq(dtss, t->seq) {
|
foreach_draw_tile_seq(dtss, t->seq) {
|
||||||
image = dtss->image;
|
image = dtss->image;
|
||||||
|
|
Loading…
Reference in New Issue