300 const Vehicle *va = GetVehicle((*(const SortStruct*)a).index); |
300 const Vehicle *va = GetVehicle((*(const SortStruct*)a).index); |
301 const Vehicle *vb = GetVehicle((*(const SortStruct*)b).index); |
301 const Vehicle *vb = GetVehicle((*(const SortStruct*)b).index); |
302 int max_speed_a = 0xFFFF, max_speed_b = 0xFFFF; |
302 int max_speed_a = 0xFFFF, max_speed_b = 0xFFFF; |
303 int r; |
303 int r; |
304 const Vehicle *ua = va, *ub = vb; |
304 const Vehicle *ua = va, *ub = vb; |
305 do { |
305 |
306 if (RailVehInfo(ua->engine_type)->max_speed != 0) |
306 if (va->type == VEH_Train && vb->type == VEH_Train) { |
307 max_speed_a = min(max_speed_a, RailVehInfo(ua->engine_type)->max_speed); |
307 do { |
308 } while ((ua = ua->next) != NULL); |
308 if (RailVehInfo(ua->engine_type)->max_speed != 0) |
309 |
309 max_speed_a = min(max_speed_a, RailVehInfo(ua->engine_type)->max_speed); |
310 do { |
310 } while ((ua = ua->next) != NULL); |
311 if (RailVehInfo(ub->engine_type)->max_speed != 0) |
311 |
312 max_speed_b = min(max_speed_b, RailVehInfo(ub->engine_type)->max_speed); |
312 do { |
313 } while ((ub = ub->next) != NULL); |
313 if (RailVehInfo(ub->engine_type)->max_speed != 0) |
314 |
314 max_speed_b = min(max_speed_b, RailVehInfo(ub->engine_type)->max_speed); |
315 r = max_speed_a - max_speed_b; |
315 } while ((ub = ub->next) != NULL); |
|
316 |
|
317 r = max_speed_a - max_speed_b; |
|
318 } else { |
|
319 r = va->max_speed - vb->max_speed; |
|
320 } |
316 |
321 |
317 VEHICLEUNITNUMBERSORTER(r, va, vb); |
322 VEHICLEUNITNUMBERSORTER(r, va, vb); |
318 |
323 |
319 return (_internal_sort_order & 1) ? -r : r; |
324 return (_internal_sort_order & 1) ? -r : r; |
320 } |
325 } |