271 InvalidateWindowClasses(WC_SHIPS_LIST); |
271 InvalidateWindowClasses(WC_SHIPS_LIST); |
272 } |
272 } |
273 |
273 |
274 static void HandleShipLoading(Vehicle *v) |
274 static void HandleShipLoading(Vehicle *v) |
275 { |
275 { |
276 if (v->current_order.type == OT_NOTHING) return; |
276 switch (v->current_order.type) { |
277 |
277 case OT_LOADING: |
278 if (v->current_order.type != OT_DUMMY) { |
278 if (--v->load_unload_time_rem) return; |
279 if (v->current_order.type != OT_LOADING) return; |
279 |
280 if (--v->load_unload_time_rem) return; |
280 if (CanFillVehicle(v) && ( |
281 |
281 v->current_order.flags & OF_FULL_LOAD || |
282 if (CanFillVehicle(v) && (v->current_order.flags & OF_FULL_LOAD || |
282 (_patches.gradual_loading && !HASBIT(v->load_status, LS_LOADING_FINISHED)) |
283 (_patches.gradual_loading && !HASBIT(v->load_status, LS_LOADING_FINISHED)))) { |
283 )) { |
284 SET_EXPENSES_TYPE(EXPENSES_SHIP_INC); |
284 SET_EXPENSES_TYPE(EXPENSES_SHIP_INC); |
285 if (LoadUnloadVehicle(v, false)) { |
285 if (LoadUnloadVehicle(v, false)) { |
286 InvalidateWindow(WC_SHIPS_LIST, v->owner); |
286 InvalidateWindow(WC_SHIPS_LIST, v->owner); |
287 MarkShipDirty(v); |
287 MarkShipDirty(v); |
|
288 } |
|
289 return; |
288 } |
290 } |
289 return; |
291 PlayShipSound(v); |
290 } |
292 |
291 PlayShipSound(v); |
|
292 |
|
293 { |
|
294 Order b = v->current_order; |
293 Order b = v->current_order; |
295 v->LeaveStation(); |
294 v->LeaveStation(); |
296 if (!(b.flags & OF_NON_STOP)) return; |
295 if (!(b.flags & OF_NON_STOP)) return; |
297 } |
296 break; |
|
297 |
|
298 case OT_DUMMY: break; |
|
299 |
|
300 default: return; |
298 } |
301 } |
299 |
302 |
300 v->cur_order_index++; |
303 v->cur_order_index++; |
301 InvalidateVehicleOrder(v); |
304 InvalidateVehicleOrder(v); |
302 } |
305 } |