From cb159e33415d4aea9d613631b1a3eccf22dd3003 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Sat, 5 Jun 2021 12:00:43 -0700 Subject: [PATCH] Fix canceling transfers. singledispatchmethod only overloads on the first argument. --- game/transfers.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/game/transfers.py b/game/transfers.py index d14e0d1b..ec623265 100644 --- a/game/transfers.py +++ b/game/transfers.py @@ -530,33 +530,35 @@ class PendingTransfers: return new_transfer @singledispatchmethod - def cancel_transport(self, transfer: TransferOrder, transport) -> None: + def cancel_transport(self, transport, transfer: TransferOrder) -> None: pass @cancel_transport.register def _cancel_transport_air( - self, _transfer: TransferOrder, transport: Airlift + self, transport: Airlift, _transfer: TransferOrder ) -> None: flight = transport.flight flight.package.remove_flight(flight) + if not flight.package.flights: + self.game.ato_for(transport.player_owned).remove_package(flight.package) self.game.aircraft_inventory.return_from_flight(flight) flight.clear_roster() @cancel_transport.register def _cancel_transport_convoy( - self, transfer: TransferOrder, transport: Convoy + self, transport: Convoy, transfer: TransferOrder ) -> None: self.convoys.remove(transport, transfer) @cancel_transport.register def _cancel_transport_cargo_ship( - self, transfer: TransferOrder, transport: CargoShip + self, transport: CargoShip, transfer: TransferOrder ) -> None: self.cargo_ships.remove(transport, transfer) def cancel_transfer(self, transfer: TransferOrder) -> None: if transfer.transport is not None: - self.cancel_transport(transfer, transfer.transport) + self.cancel_transport(transfer.transport, transfer) self.pending_transfers.remove(transfer) transfer.origin.base.commision_units(transfer.units)