Changeset - r15890:3dc179e59aac
[Not reviewed]
master
0 1 0
frosch - 14 years ago 2010-08-20 17:36:09
frosch@openttd.org
(svn r20583) -Fix: Autoreplace failed while attaching non-replaced wagons to the new chain, if to-be-sold-engines would become front-engines and the unitnumber limit would be exceeded.
1 file changed with 8 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/autoreplace_cmd.cpp
Show inline comments
 
@@ -459,6 +459,7 @@ static CommandCost ReplaceChain(Vehicle 
 

	
 
			/* Append engines to the new chain
 
			 * We do this from back to front, so that the head of the temporary vehicle chain does not change all the time.
 
			 * That way we also have less trouble when exceeding the unitnumber limit.
 
			 * OTOH the vehicle attach callback is more expensive this way :s */
 
			Train *last_engine = NULL; ///< Shall store the last engine unit after this step
 
			if (cost.Succeeded()) {
 
@@ -467,6 +468,13 @@ static CommandCost ReplaceChain(Vehicle 
 

	
 
					if (RailVehInfo(append->engine_type)->railveh_type == RAILVEH_WAGON) continue;
 

	
 
					if (new_vehs[i] != NULL) {
 
						/* Move the old engine to a separate row with DC_AUTOREPLACE. Else
 
						 * moving the wagon in front may fail later due to unitnumber limit.
 
						 * (We have to attach wagons without DC_AUTOREPLACE.) */
 
						MoveVehicle(old_vehs[i], NULL, DC_EXEC | DC_AUTOREPLACE, false);
 
					}
 

	
 
					if (last_engine == NULL) last_engine = append;
 
					cost.AddCost(MoveVehicle(append, new_head, DC_EXEC, false));
 
					if (cost.Failed()) break;
0 comments (0 inline, 0 general)