From f3241c286ccf0f41b9d69141f62c1b5e6b7dd81e Mon Sep 17 00:00:00 2001 From: Raffson Date: Fri, 17 Mar 2023 23:55:36 +0100 Subject: [PATCH] Fix convoy bug mentioned by Adecarcer --- game/transfers.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/game/transfers.py b/game/transfers.py index a0014cf7..9be7ebc7 100644 --- a/game/transfers.py +++ b/game/transfers.py @@ -415,7 +415,8 @@ class MultiGroupTransport(MissionTarget, Transport): units: dict[GroundUnitType, int] = defaultdict(int) for transfer in self.transfers: for unit_type, count in transfer.units.items(): - units[unit_type] += count + if count > 0: + units[unit_type] += count return units def iter_units(self) -> Iterator[GroundUnitType]: @@ -620,13 +621,18 @@ class PendingTransfers: raise ValueError units = {} + to_delete = [] for unit_type, remaining in transfer.units.items(): take = min(remaining, size) + if not take: + if not remaining: + to_delete.append(unit_type) + continue size -= take transfer.units[unit_type] -= take units[unit_type] = take - if not size: - break + for td in to_delete: + del transfer.units[td] new_transfer = TransferOrder(transfer.origin, transfer.destination, units) self.pending_transfers.append(new_transfer) return new_transfer