Method moved to Warehouse
This commit is contained in:
@@ -11,6 +11,7 @@ package engine.objects;
|
||||
|
||||
import engine.gameManager.ChatManager;
|
||||
import engine.gameManager.DbManager;
|
||||
import engine.loot.WorkOrder;
|
||||
import engine.mbEnums;
|
||||
import engine.net.Dispatch;
|
||||
import engine.net.DispatchMessage;
|
||||
@@ -635,4 +636,39 @@ public class Warehouse {
|
||||
return warehouse.locked.contains(resourceType);
|
||||
}
|
||||
|
||||
public static HashMap<mbEnums.ResourceType, Integer> calcCostOverrun(WorkOrder workOrder) {
|
||||
|
||||
HashMap<mbEnums.ResourceType, Integer> costMap = new HashMap<>();
|
||||
Warehouse warehouse;
|
||||
|
||||
// See if we can meet gold only requirements and early exit
|
||||
|
||||
if (workOrder.production_cost_total.size() == 1) {
|
||||
if (workOrder.vendor.building.getStrongboxValue() > workOrder.production_cost_total.get(mbEnums.ResourceType.GOLD))
|
||||
return costMap;
|
||||
}
|
||||
|
||||
// Gold deficit exists so a warehouse is required
|
||||
|
||||
warehouse = workOrder.vendor.building.getCity() == null ? null : workOrder.vendor.building.getCity().warehouse;
|
||||
|
||||
if (warehouse == null)
|
||||
return workOrder.production_cost_total;
|
||||
|
||||
// Method returns a map of resourceType that a transaction overdrafts.
|
||||
|
||||
HashMap<mbEnums.ResourceType, Integer> overflowMap = new HashMap<>();
|
||||
|
||||
for (mbEnums.ResourceType resourceType : workOrder.production_cost_total.keySet()) {
|
||||
|
||||
int debit = warehouse.resources.get(resourceType) - workOrder.production_cost_total.get(resourceType);
|
||||
|
||||
// Locked resources are always unavailable
|
||||
|
||||
if (debit < 0 || warehouse.locked.contains(resourceType))
|
||||
overflowMap.put(resourceType, debit);
|
||||
}
|
||||
|
||||
return overflowMap;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user