(svn r21562) -Change: Add articulated parts of vehicles in a refit selection to that selection.

This commit is contained in:
terkhen 2010-12-21 13:53:19 +00:00
parent a1ff6859c5
commit 8fc48a79da
1 changed files with 20 additions and 1 deletions

View File

@ -2269,9 +2269,28 @@ const GroundVehicleCache *Vehicle::GetGroundVehicleCache() const
void GetVehicleSet(VehicleSet &set, Vehicle *v, uint8 num_vehicles)
{
if (v->type == VEH_TRAIN) {
for (Train *u = Train::From(v); u != NULL && num_vehicles > 0; num_vehicles--, u = u->Next()) {
Train *u = Train::From(v);
/* If the first vehicle in the selection is part of an articulated vehicle, add the previous parts of the vehicle. */
if (u->IsArticulatedPart()) {
u = u->GetFirstEnginePart();
while (u->index != v->index) {
set.Include(u->index);
u = u->GetNextArticPart();
}
}
for (;u != NULL && num_vehicles > 0; num_vehicles--, u = u->Next()) {
/* Include current vehicle in the selection. */
set.Include(u->index);
/* If the vehicle is multiheaded, add the other part too. */
if (u->IsMultiheaded()) set.Include(u->other_multiheaded_part->index);
}
/* If the last vehicle is part of an articulated vehicle, add the following parts of the vehicle. */
while (u != NULL && u->IsArticulatedPart()) {
set.Include(u->index);
u = u->Next();
}
}
}