summaryrefslogtreecommitdiff
path: root/src/rail_cmd.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2007-12-15 23:11:18 +0000
committersmatz <smatz@openttd.org>2007-12-15 23:11:18 +0000
commit60f9bbd17e0a2974d4e2d4da573ca6d75e06d3a2 (patch)
tree8577a9e0a6fc5a9738a729065c3218757a625053 /src/rail_cmd.cpp
parent38c25ab03b8cfa939f9e78d796e9d92bee867b7a (diff)
downloadopenttd-60f9bbd17e0a2974d4e2d4da573ca6d75e06d3a2.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.cpp41
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;
}
}