1
0
Fork 0

(svn r2104) Simplify implementation of Get{First,Prev}VehicleInChain() and remove a pointless check

release/0.4.5
tron 2005-03-29 08:37:44 +00:00
parent eb96f89960
commit 3a8665f796
1 changed files with 6 additions and 13 deletions

View File

@ -343,27 +343,20 @@ Vehicle *GetLastVehicleInChain(Vehicle *v)
Vehicle *GetPrevVehicleInChain(const Vehicle *v) Vehicle *GetPrevVehicleInChain(const Vehicle *v)
{ {
const Vehicle *org = v; Vehicle *u;
FOR_ALL_VEHICLES(v) { FOR_ALL_VEHICLES(u) if (u->next == v) return u;
if (v->type == VEH_Train && org == v->next)
return (Vehicle*)v;
}
return NULL; return NULL;
} }
Vehicle *GetFirstVehicleInChain(const Vehicle *v) Vehicle *GetFirstVehicleInChain(const Vehicle *v)
{ {
while (true) { const Vehicle* u;
const Vehicle* u = v;
v = GetPrevVehicleInChain(v); while ((u = GetPrevVehicleInChain(v)) != NULL) v = u;
/* If there is no such vehicle,
'v' == NULL and so 'u' is the first vehicle in chain */ return (Vehicle*)v;
if (v == NULL)
return (Vehicle*)u;
}
} }
int CountVehiclesInChain(Vehicle *v) int CountVehiclesInChain(Vehicle *v)