changeset 14778:9b5bbac35346 draft

(svn r19366) -Codechange: Move setting of _error_message from the callback check routine to the caller.
author alberth <alberth@openttd.org>
date Sun, 07 Mar 2010 16:10:40 +0000
parents a8eb10828cec
children 7e7acca9c232
files src/vehicle.cpp
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -461,7 +461,6 @@
 	Train *t = Train::From(v);
 	if ((t->track != rail_bits) && !TracksOverlap(t->track | rail_bits)) return NULL;
 
-	_error_message = STR_ERROR_TRAIN_IN_THE_WAY + v->type;
 	return v;
 }
 
@@ -475,7 +474,13 @@
  */
 bool EnsureNoTrainOnTrackBits(TileIndex tile, TrackBits track_bits)
 {
-	return !HasVehicleOnPos(tile, &track_bits, &EnsureNoTrainOnTrackProc);
+	/* Value v is not safe in MP games, however, it is used to generate a local
+	 * error message only (which may be different for different machines).
+	 * Such a message does not affect MP synchronisation.
+	 */
+	Vehicle *v = VehicleFromPos(tile, &track_bits, &EnsureNoTrainOnTrackProc, true);
+	if (v != NULL) _error_message = STR_ERROR_TRAIN_IN_THE_WAY + v->type;
+	return v == NULL;
 }
 
 static void UpdateNewVehiclePosHash(Vehicle *v, bool remove)