Class cleanup
This commit is contained in:
@@ -14,7 +14,10 @@ import engine.loot.WorkOrder;
|
|||||||
import engine.mbEnums;
|
import engine.mbEnums;
|
||||||
import engine.net.DispatchMessage;
|
import engine.net.DispatchMessage;
|
||||||
import engine.net.client.msg.ItemProductionMsg;
|
import engine.net.client.msg.ItemProductionMsg;
|
||||||
import engine.objects.*;
|
import engine.objects.Item;
|
||||||
|
import engine.objects.ItemTemplate;
|
||||||
|
import engine.objects.NPC;
|
||||||
|
import engine.objects.Warehouse;
|
||||||
import engine.powers.EffectsBase;
|
import engine.powers.EffectsBase;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -100,18 +103,24 @@ public enum ForgeManager implements Runnable {
|
|||||||
|
|
||||||
public static int submit(WorkOrder workOrder) {
|
public static int submit(WorkOrder workOrder) {
|
||||||
|
|
||||||
|
// Make sure vendor can roll the formulae, warehouse can afford
|
||||||
|
// the wordOrder and other related checks.
|
||||||
|
|
||||||
int validation_result = ItemManager.validate(workOrder);
|
int validation_result = ItemManager.validate(workOrder);
|
||||||
|
|
||||||
|
// The return code is used by the submitter as a
|
||||||
|
// popup error message to the player.
|
||||||
|
|
||||||
if (validation_result != 0)
|
if (validation_result != 0)
|
||||||
return validation_result;
|
return validation_result;
|
||||||
|
|
||||||
|
// Configure this production run.
|
||||||
|
|
||||||
workOrder.workOrderID = wordOrderCounter.incrementAndGet();
|
workOrder.workOrderID = wordOrderCounter.incrementAndGet();
|
||||||
workOrder.rollingDuration = ForgeManager.calcRollingDuration(workOrder);
|
workOrder.rollingDuration = ForgeManager.calcRollingDuration(workOrder);
|
||||||
workOrder.completionTime = System.currentTimeMillis() + workOrder.rollingDuration;
|
workOrder.completionTime = System.currentTimeMillis() + workOrder.rollingDuration;
|
||||||
workOrder.slots_used = calcAvailableSlots(workOrder);
|
workOrder.slots_used = calcAvailableSlots(workOrder);
|
||||||
|
|
||||||
// Configure this production run.
|
|
||||||
|
|
||||||
workOrder.total_produced = 0;
|
workOrder.total_produced = 0;
|
||||||
workOrder.total_to_produce *= workOrder.slots_used;
|
workOrder.total_to_produce *= workOrder.slots_used;
|
||||||
workOrder.production_cost = calcProductionCost(workOrder);
|
workOrder.production_cost = calcProductionCost(workOrder);
|
||||||
@@ -139,30 +148,6 @@ public enum ForgeManager implements Runnable {
|
|||||||
return validation_result;
|
return validation_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean debitWorkOrderCost(WorkOrder workOrder) {
|
|
||||||
|
|
||||||
int strongbox = workOrder.vendor.building.getStrongboxValue();
|
|
||||||
int overflow = strongbox - workOrder.production_cost_total.get(mbEnums.ResourceType.GOLD);
|
|
||||||
|
|
||||||
if (overflow > 1 || workOrder.production_cost_total.size() > 1) {
|
|
||||||
|
|
||||||
// Deduct total cost from warehouse
|
|
||||||
|
|
||||||
City city = workOrder.vendor.building.getCity();
|
|
||||||
|
|
||||||
if (city == null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
Warehouse warehouse = workOrder.vendor.building.getCity().warehouse;
|
|
||||||
|
|
||||||
if (warehouse == null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
workOrder.production_cost_total.forEach((key, value) -> warehouse.resources.compute(key, (k, v) -> warehouse.resources.get(key) - value));
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static long calcRollingDuration(WorkOrder workOrder) {
|
public static long calcRollingDuration(WorkOrder workOrder) {
|
||||||
|
|
||||||
float rollingDuration;
|
float rollingDuration;
|
||||||
@@ -377,4 +362,25 @@ public enum ForgeManager implements Runnable {
|
|||||||
return modifier;
|
return modifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean debitWorkOrderCost(WorkOrder workOrder) {
|
||||||
|
|
||||||
|
int strongbox = workOrder.vendor.building.getStrongboxValue();
|
||||||
|
int overflow = strongbox - workOrder.production_cost_total.get(mbEnums.ResourceType.GOLD);
|
||||||
|
|
||||||
|
if (overflow > 1 || workOrder.production_cost_total.size() > 1) {
|
||||||
|
|
||||||
|
// Deduct total cost from warehouse
|
||||||
|
|
||||||
|
if (workOrder.vendor.building.getCity() == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
Warehouse warehouse = workOrder.vendor.building.getCity().warehouse;
|
||||||
|
|
||||||
|
if (warehouse == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
workOrder.production_cost_total.forEach((key, value) -> warehouse.resources.compute(key, (k, v) -> warehouse.resources.get(key) - value));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user