From 179cd84cc35989570fbe6ae9c85fd61a07a145a7 Mon Sep 17 00:00:00 2001 From: tron Date: Tue, 1 Aug 2006 06:08:11 +0000 Subject: [PATCH] (svn r5690) Factor common code to reduce code duplication --- newgrf_station.c | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/newgrf_station.c b/newgrf_station.c index 14b1d083b2..b3f76648c8 100644 --- a/newgrf_station.c +++ b/newgrf_station.c @@ -678,42 +678,37 @@ 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) + +static const StationSpec* GetStationSpec(TileIndex t) { - const Station *st; - const StationSpec *statspec; + const Station* st; uint specindex; - if (!IsCustomStationSpecIndex(tile)) return false; + if (!IsCustomStationSpecIndex(t)) return NULL; - st = GetStationByTile(tile); - specindex = GetCustomStationSpecIndex(tile); - if (specindex >= st->num_specs) return false; + st = GetStationByTile(t); + specindex = GetCustomStationSpecIndex(t); + return specindex < st->num_specs ? st->speclist[specindex].spec : NULL; +} - statspec = st->speclist[specindex].spec; - if (statspec == NULL) return false; - return HASBIT(statspec->blocked, GetStationGfx(tile)); +/* 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 StationSpec* statspec = GetStationSpec(tile); + + return statspec != NULL && 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 true; - - statspec = st->speclist[specindex].spec; - if (statspec == NULL) return true; + const StationSpec* statspec = GetStationSpec(tile); - return HASBIT(statspec->pylons, GetStationGfx(tile)) || !HASBIT(statspec->wires, GetStationGfx(tile)); + return + statspec == NULL || + HASBIT(statspec->pylons, GetStationGfx(tile)) || + !HASBIT(statspec->wires, GetStationGfx(tile)); }