diff --git a/src/engine/gameManager/ForgeManager.java b/src/engine/gameManager/ForgeManager.java index fc507586..b941d1f9 100644 --- a/src/engine/gameManager/ForgeManager.java +++ b/src/engine/gameManager/ForgeManager.java @@ -10,8 +10,10 @@ package engine.gameManager; import engine.loot.WorkOrder; import engine.mbEnums; -import engine.net.client.msg.ErrorPopupMsg; -import engine.objects.*; +import engine.objects.Item; +import engine.objects.ItemTemplate; +import engine.objects.MobLoot; +import engine.objects.Warehouse; import engine.powers.EffectsBase; import org.pmw.tinylog.Logger; @@ -86,7 +88,12 @@ public enum ForgeManager implements Runnable { forgeManager.start(); } - public static void submit(WorkOrder workOrder) { + public static int submit(WorkOrder workOrder) { + + int validation_result = ForgeManager.validate(workOrder); + + if (validation_result != 0) + return validation_result; workOrder.workOrderID = wordOrderCounter.incrementAndGet(); workOrder.rollingDuration = ForgeManager.calcRollingDuration(workOrder); @@ -111,39 +118,33 @@ public enum ForgeManager implements Runnable { Logger.info(workOrder.toString()); workOrder.vendor.workOrders.add(workOrder); forge.add(workOrder); + + return validation_result; } - public static boolean validate(PlayerCharacter playerCharacter, WorkOrder workOrder) { + public static int validate(WorkOrder workOrder) { + + int validation_result = 0; ItemTemplate template = ItemTemplate.templates.get(workOrder.templateID); - if (!workOrder.vendor.charItemManager.hasRoomInventory(template.item_wt)) { - if (playerCharacter != null) - ErrorPopupMsg.sendErrorPopup(playerCharacter, 30); //30: That person cannot carry that item - return false; - } + if (!workOrder.vendor.charItemManager.hasRoomInventory(template.item_wt)) + return 30; //30: That person cannot carry that item - if (!workOrder.vendor.getItemModTable().contains(((byte) template.modTable))) { - if (playerCharacter != null) - ErrorPopupMsg.sendErrorPopup(playerCharacter, 59); //59: This hireling does not have this formula - return false; - } + if (!workOrder.vendor.getItemModTable().contains(((byte) template.modTable))) + return 59; //59: This hireling does not have this formula - if (!calcCostOverrun(workOrder).isEmpty()) { - if (playerCharacter != null) - ErrorPopupMsg.sendErrorPopup(playerCharacter, 18); //18: You can't really afford that - return false; - } + + if (!calcCostOverrun(workOrder).isEmpty()) + return 10; //18: You can't really afford that // Forge must be protected in order to access warehouse. if (calcProductionCost(workOrder).size() > 1) - if (!workOrder.vendor.building.protectionState.equals(mbEnums.ProtectionState.PROTECTED)) { - if (playerCharacter != null) - ErrorPopupMsg.sendErrorPopup(playerCharacter, 193); //193: Production denied: This building must be protected to gain access to warehouse - } + if (!workOrder.vendor.building.protectionState.equals(mbEnums.ProtectionState.PROTECTED)) + return 193; //193: Production denied: This building must be protected to gain access to warehouse - return true; + return validation_result; } public static long calcRollingDuration(WorkOrder workOrder) { diff --git a/src/engine/net/client/handlers/ItemProductionMsgHandler.java b/src/engine/net/client/handlers/ItemProductionMsgHandler.java index b42b5dd4..99a5cdbf 100644 --- a/src/engine/net/client/handlers/ItemProductionMsgHandler.java +++ b/src/engine/net/client/handlers/ItemProductionMsgHandler.java @@ -88,14 +88,16 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler { workOrder.item_name_override = msg.name; workOrder.multiple_slot_request = msg.size; - // Validate vendor can roll this item + // Submit workOder to begin rolling items - if (ForgeManager.validate(player, workOrder) == false) - return true; + int validation_result = ForgeManager.submit(workOrder); - // Start rolling the item(s) + // workOrder cannot be completed - ForgeManager.submit(workOrder); + if (validation_result != 0) { + ErrorPopupMsg.sendErrorPopup(player, validation_result); + return true; + } //Create Multiple Item Function.. Fill all empty slots