From 973dfc94f736903c0f50c78c472ad695b11c2159 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Thu, 9 May 2024 11:31:12 -0400 Subject: [PATCH] Withdraw logic cleanup --- src/engine/loot/WorkOrder.java | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/engine/loot/WorkOrder.java b/src/engine/loot/WorkOrder.java index e3b8e949..0f269254 100644 --- a/src/engine/loot/WorkOrder.java +++ b/src/engine/loot/WorkOrder.java @@ -150,30 +150,25 @@ public class WorkOrder implements Delayed { int strongbox = workOrder.vendor.building.getStrongboxValue(); - // Strongbox can cover total gold cost; - - if (workOrder.production_cost_total.get(mbEnums.ResourceType.GOLD) <= strongbox) { + // Early exit if strongbox can cover gold only roll. + if (workOrder.production_cost_total.size() == 1 && workOrder.production_cost_total.get(mbEnums.ResourceType.GOLD) <= strongbox) { workOrder.vendor.building.setStrongboxValue(strongbox - workOrder.production_cost_total.get(mbEnums.ResourceType.GOLD)); workOrder.production_cost_total.put(mbEnums.ResourceType.GOLD, 0); - - // Early exit for Strongbox covering gold only rolls - - if (workOrder.production_cost_total.size() == 1) - return true; - } else { - int remainingAmount = workOrder.production_cost_total.get(mbEnums.ResourceType.GOLD) - strongbox; - workOrder.vendor.building.setStrongboxValue(0); - workOrder.production_cost_total.put(mbEnums.ResourceType.GOLD, workOrder.production_cost_total.get(mbEnums.ResourceType.GOLD) - remainingAmount); + return true; } - // There is an overflow at this point and a warehouse is required + // Warehouse is required after this point Warehouse warehouse = workOrder.vendor.building.getCity().warehouse; if (warehouse == null) return false; + int remainingAmount = workOrder.production_cost_total.get(mbEnums.ResourceType.GOLD) - strongbox; + workOrder.vendor.building.setStrongboxValue(0); + workOrder.production_cost_total.put(mbEnums.ResourceType.GOLD, workOrder.production_cost_total.get(mbEnums.ResourceType.GOLD) - remainingAmount); + // Deduct total production cost from warehouse workOrder.production_cost_total.forEach((key, value) -> warehouse.resources.put(key, warehouse.resources.get(key) - value));