File diff r12108:f8d8164485bd → r12109:90df01928018
src/vehicle_cmd.cpp
Show inline comments
 
@@ -67,7 +67,7 @@ CommandCost CmdStartStopVehicle(TileInde
 

	
 
	switch (v->type) {
 
		case VEH_TRAIN:
 
			if ((v->vehstatus & VS_STOPPED) && ((Train *)v)->tcache.cached_power == 0) return_cmd_error(STR_TRAIN_START_NO_CATENARY);
 
			if ((v->vehstatus & VS_STOPPED) && Train::From(v)->tcache.cached_power == 0) return_cmd_error(STR_TRAIN_START_NO_CATENARY);
 
			break;
 

	
 
		case VEH_SHIP:
 
@@ -75,7 +75,7 @@ CommandCost CmdStartStopVehicle(TileInde
 
			break;
 

	
 
		case VEH_AIRCRAFT: {
 
			Aircraft *a = (Aircraft *)v;
 
			Aircraft *a = Aircraft::From(v);
 
			/* cannot stop airplane when in flight, or when taking off / landing */
 
			if (a->state >= STARTTAKEOFF && a->state < TERM7) return_cmd_error(STR_ERROR_AIRCRAFT_IS_IN_FLIGHT);
 
		} break;
 
@@ -152,7 +152,7 @@ CommandCost CmdMassStartStopVehicle(Tile
 

	
 
		if (!vehicle_list_window) {
 
			if (vehicle_type == VEH_TRAIN) {
 
				if (CheckTrainInDepot((const Train *)v, false) == -1) continue;
 
				if (CheckTrainInDepot(Train::From(v), false) == -1) continue;
 
			} else {
 
				if (!(v->vehstatus & VS_HIDDEN)) continue;
 
			}
 
@@ -349,7 +349,7 @@ CommandCost CmdCloneVehicle(TileIndex ti
 

	
 
	if (!CheckOwnership(v->owner)) return CMD_ERROR;
 

	
 
	if (v->type == VEH_TRAIN && (!IsFrontEngine(v) || ((Train *)v)->crash_anim_pos >= 4400)) return CMD_ERROR;
 
	if (v->type == VEH_TRAIN && (!IsFrontEngine(v) || Train::From(v)->crash_anim_pos >= 4400)) return CMD_ERROR;
 

	
 
	/* check that we can allocate enough vehicles */
 
	if (!(flags & DC_EXEC)) {
 
@@ -381,8 +381,8 @@ CommandCost CmdCloneVehicle(TileIndex ti
 
		if (flags & DC_EXEC) {
 
			w = Vehicle::Get(_new_vehicle_id);
 

	
 
			if (v->type == VEH_TRAIN && HasBit(((Train *)v)->flags, VRF_REVERSE_DIRECTION)) {
 
				SetBit(((Train *)w)->flags, VRF_REVERSE_DIRECTION);
 
			if (v->type == VEH_TRAIN && HasBit(Train::From(v)->flags, VRF_REVERSE_DIRECTION)) {
 
				SetBit(Train::From(w)->flags, VRF_REVERSE_DIRECTION);
 
			}
 

	
 
			if (v->type == VEH_TRAIN && !IsFrontEngine(v)) {
 
@@ -403,7 +403,7 @@ CommandCost CmdCloneVehicle(TileIndex ti
 
			}
 
			w_rear = w; // trains needs to know the last car in the train, so they can add more in next loop
 
		}
 
	} while (v->type == VEH_TRAIN && (v = GetNextVehicle((Train *)v)) != NULL);
 
	} while (v->type == VEH_TRAIN && (v = GetNextVehicle(Train::From(v))) != NULL);
 

	
 
	if ((flags & DC_EXEC) && v_front->type == VEH_TRAIN) {
 
		/* for trains this needs to be the front engine due to the callback function */
 
@@ -437,7 +437,7 @@ CommandCost CmdCloneVehicle(TileIndex ti
 
				}
 

	
 
				if (w->type == VEH_TRAIN && EngineHasArticPart(w)) {
 
					w = GetNextArticPart((Train *)w);
 
					w = GetNextArticPart(Train::From(w));
 
				} else if (w->type == VEH_ROAD && RoadVehHasArticPart(w)) {
 
					w = w->Next();
 
				} else {
 
@@ -453,7 +453,7 @@ CommandCost CmdCloneVehicle(TileIndex ti
 
			}
 

	
 
			if (v->type == VEH_TRAIN && EngineHasArticPart(v)) {
 
				v = GetNextArticPart((Train *)v);
 
				v = GetNextArticPart(Train::From(v));
 
			} else if (v->type == VEH_ROAD && RoadVehHasArticPart(v)) {
 
				v = v->Next();
 
			} else {
 
@@ -461,8 +461,8 @@ CommandCost CmdCloneVehicle(TileIndex ti
 
			}
 
		} while (v != NULL);
 

	
 
		if ((flags & DC_EXEC) && v->type == VEH_TRAIN) w = GetNextVehicle((Train *)w);
 
	} while (v->type == VEH_TRAIN && (v = GetNextVehicle((Train *)v)) != NULL);
 
		if ((flags & DC_EXEC) && v->type == VEH_TRAIN) w = GetNextVehicle(Train::From(w));
 
	} while (v->type == VEH_TRAIN && (v = GetNextVehicle(Train::From(v))) != NULL);
 

	
 
	if (flags & DC_EXEC) {
 
		/*