Proper accounting for workOrder removal post completion

This commit is contained in:
2024-04-19 09:50:29 -04:00
parent 0ec2b436de
commit 264094924b
@@ -142,6 +142,14 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler {
workOrder.cooking.remove(virtualItem);
ForgeManager.itemWorkOrderLookup.remove(virtualItem);
// WorkOrder exists until all items are completed or junked
// this is to hold a reference to the virtual item for serialization (NPCMsgHandler)
workOrder.slots_used = workOrder.slots_used - 1;
if (workOrder.slots_used == 0)
ForgeManager.vendorWorkOrderLookup.get(workOrder.vendor).remove(workOrder);
// Persist item and add to vendor inventory
Item completedItem = DbManager.ItemQueries.PERSIST(virtualItem);
@@ -364,12 +372,19 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler {
if (vendor.getBuilding() == null)
return;
// Delete the item
ForgeManager.inMemoryItemLookup.remove(targetItem.objectUUID);
WorkOrder workOrder = ForgeManager.itemWorkOrderLookup.get(targetItem);
workOrder.cooking.remove(targetItem);
// WorkOrder exists until all items are completed or junked
// this is to hold a reference to the virtual item for serialization (NPCMsgHandler)
workOrder.slots_used = workOrder.slots_used - 1;
if (workOrder.slots_used == 0)
ForgeManager.vendorWorkOrderLookup.get(workOrder.vendor).remove(workOrder);
// Refresh vendor's inventory to client
outMsg = new ManageNPCMsg(vendor);