diff options
author | smatz <smatz@openttd.org> | 2007-12-15 23:11:18 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2007-12-15 23:11:18 +0000 |
commit | acf6e08f7840c9b6b89bd6e758972bf2bea29c5f (patch) | |
tree | 8577a9e0a6fc5a9738a729065c3218757a625053 /src/rail_cmd.cpp | |
parent | cbcfcb3bf4fe5e438598859ec71bfb28bf391f09 (diff) | |
download | openttd-acf6e08f7840c9b6b89bd6e758972bf2bea29c5f.tar.xz |
(svn r11642) -Codechange: VehicleFromPos does check for v->tile == tile, so remove useless checks
Diffstat (limited to 'src/rail_cmd.cpp')
-rw-r--r-- | src/rail_cmd.cpp | 41 |
1 files changed, 10 insertions, 31 deletions
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 8596bc8be..b29f63538 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -82,21 +82,14 @@ const byte _track_sloped_sprites[14] = { * 11uuuudd => rail depot */ -/** Struct used in EnsureNoTrainOnTrack() */ -struct TrainOnTrackData { - TileIndex tile; ///< tile to check - uint z; ///< tile max Z - TrackBits rail_bits; ///< trackbits of interest -}; static void *EnsureNoTrainOnTrackProc(Vehicle *v, void *data) { - const TrainOnTrackData *info = (const TrainOnTrackData *)data; + TrackBits rail_bits = *(TrackBits *)data; - if (v->tile != info->tile || v->type != VEH_TRAIN) return NULL; - if (v->z_pos > info->z) return NULL; + if (v->type != VEH_TRAIN) return NULL; - if ((v->u.rail.track != info->rail_bits) && !TracksOverlap(v->u.rail.track | info->rail_bits)) return NULL; + if ((v->u.rail.track != rail_bits) && !TracksOverlap(v->u.rail.track | rail_bits)) return NULL; _error_message = VehicleInTheWayErrMsg(v); return v; @@ -111,13 +104,9 @@ static void *EnsureNoTrainOnTrackProc(Vehicle *v, void *data) */ static bool EnsureNoTrainOnTrack(TileIndex tile, Track track) { - TrainOnTrackData info; - - info.tile = tile; - info.z = GetTileMaxZ(tile); - info.rail_bits = TrackToTrackBits(track); + TrackBits rail_bits = TrackToTrackBits(track); - return VehicleFromPos(tile, &info, EnsureNoTrainOnTrackProc) == NULL; + return VehicleFromPos(tile, &rail_bits, &EnsureNoTrainOnTrackProc) == NULL; } static bool CheckTrackCombination(TileIndex tile, TrackBits to_build, uint flags) @@ -1160,7 +1149,7 @@ void *UpdateTrainPowerProc(Vehicle *v, void *data) { /* Similiar checks as in TrainPowerChanged() */ - if (v->type == VEH_TRAIN && v->tile == *(TileIndex*)data && !IsArticulatedPart(v)) { + if (v->type == VEH_TRAIN && !IsArticulatedPart(v)) { const RailVehicleInfo *rvi = RailVehInfo(v->engine_type); if (GetVehicleProperty(v, 0x0B, rvi->power) != 0) TrainPowerChanged(v->First()); } @@ -1198,7 +1187,7 @@ static CommandCost DoConvertRail(TileIndex tile, RailType totype, bool exec) } /* update power of train engines on this tile */ - VehicleFromPos(tile, &tile, UpdateTrainPowerProc); + VehicleFromPos(tile, NULL, &UpdateTrainPowerProc); } return CommandCost(RailConvertCost(GetRailType(tile), totype) * CountBits(GetTrackBits(tile))); @@ -1893,23 +1882,14 @@ static bool SetSignalsEnumProc(TileIndex tile, void* data, Trackdir trackdir, ui return false; } -/* Struct to parse data from VehicleFromPos to SignalVehicleCheckProc */ -struct SignalVehicleCheckStruct { - TileIndex tile; - uint track; -}; - static void *SignalVehicleCheckProc(Vehicle *v, void *data) { - const SignalVehicleCheckStruct* dest = (SignalVehicleCheckStruct*)data; + uint track = *(uint*)data; if (v->type != VEH_TRAIN) return NULL; - /* Wrong tile, or no train? Not a match */ - if (v->tile != dest->tile) return NULL; - /* Are we on the same piece of track? */ - if (dest->track & v->u.rail.track * 0x101) return v; + if (track & v->u.rail.track * 0x101) return v; return NULL; } @@ -1922,8 +1902,7 @@ static bool SignalVehicleCheck(TileIndex tile, uint track) TileIndex endtile = IsTunnel(tile) ? GetOtherTunnelEnd(tile) : GetOtherBridgeEnd(tile); return GetVehicleTunnelBridge(tile, endtile) != NULL; } else { - SignalVehicleCheckStruct dest = {tile, track}; - return VehicleFromPos(tile, &dest, &SignalVehicleCheckProc) != NULL; + return VehicleFromPos(tile, &track, &SignalVehicleCheckProc) != NULL; } } |