284 } |
284 } |
285 ShowAircraftViewWindow(v); |
285 ShowAircraftViewWindow(v); |
286 } |
286 } |
287 } |
287 } |
288 |
288 |
289 static inline void ExtendEngineListSize(const EngineID **engine_list, uint16 *engine_list_length, uint16 step_size, uint16 max) |
289 static inline void ExtendEngineListSize(EngineID **engine_list, uint16 *engine_list_length, uint16 step_size, uint16 max) |
290 { |
290 { |
291 *engine_list_length = min(*engine_list_length + step_size, max); |
291 *engine_list_length = min(*engine_list_length + step_size, max); |
292 *engine_list = realloc((void*)*engine_list, (*engine_list_length) * sizeof((*engine_list)[0])); |
292 *engine_list = realloc((void*)*engine_list, (*engine_list_length) * sizeof((*engine_list)[0])); |
293 } |
293 } |
294 |
294 |
308 if (IsEngineBuildable(eid, VEH_Aircraft)) { |
308 if (IsEngineBuildable(eid, VEH_Aircraft)) { |
309 const AircraftVehicleInfo *avi = AircraftVehInfo(eid); |
309 const AircraftVehicleInfo *avi = AircraftVehInfo(eid); |
310 |
310 |
311 switch (avi->subtype) { |
311 switch (avi->subtype) { |
312 case AIR_CTOL: // Propeller planes |
312 case AIR_CTOL: // Propeller planes |
313 if (*num_planes == plane_length) ExtendEngineListSize((const EngineID**)planes, &plane_length, 5, NUM_AIRCRAFT_ENGINES); |
313 if (*num_planes == plane_length) ExtendEngineListSize(planes, &plane_length, 5, NUM_AIRCRAFT_ENGINES); |
314 (*planes)[(*num_planes)++] = eid; |
314 (*planes)[(*num_planes)++] = eid; |
315 break; |
315 break; |
316 |
316 |
317 case (AIR_CTOL | AIR_FAST): // Jet planes |
317 case (AIR_CTOL | AIR_FAST): // Jet planes |
318 if (*num_jets == jet_length) ExtendEngineListSize((const EngineID**)jets, &jet_length, 5, NUM_AIRCRAFT_ENGINES); |
318 if (*num_jets == jet_length) ExtendEngineListSize(jets, &jet_length, 5, NUM_AIRCRAFT_ENGINES); |
319 (*jets)[(*num_jets)++] = eid; |
319 (*jets)[(*num_jets)++] = eid; |
320 break; |
320 break; |
321 |
321 |
322 case 0: // Helicopters |
322 case 0: // Helicopters |
323 if (*num_helicopters == helicopter_length) ExtendEngineListSize((const EngineID**)helicopters, &plane_length, 5, NUM_AIRCRAFT_ENGINES); |
323 if (*num_helicopters == helicopter_length) ExtendEngineListSize(helicopters, &helicopter_length, 5, NUM_AIRCRAFT_ENGINES); |
324 (*helicopters)[(*num_helicopters)++] = eid; |
324 (*helicopters)[(*num_helicopters)++] = eid; |
325 break; |
325 break; |
326 } |
326 } |
327 } |
327 } |
328 } |
328 } |