forged items are persisted

This commit is contained in:
2024-04-14 16:29:17 -04:00
parent e195d86fb6
commit d5bd500f39
2 changed files with 31 additions and 13 deletions
+28 -13
View File
@@ -62,25 +62,40 @@ public enum ForgeManager implements Runnable {
if (workOrder.runCanceled || workOrder.runCompleted)
continue;
// Create in memory items to add to collections
// Persist current items that are currently cooking for this
// workOrder
forgeItems(workOrder);
ArrayList<Item> toRemove = new ArrayList<>();
for (Item cooked_item : workOrder.cooking) {
toRemove.add(cooked_item);
cooked_item.containerType = mbEnums.ItemContainerType.INVENTORY;
Item completed_item = DbManager.ItemQueries.PERSIST(cooked_item);
workOrder.vendor.charItemManager.addItemToInventory(completed_item);
}
// Remove the fake negativeID item from all collections.
for (Item memoryItem : toRemove) {
workOrder.cooking.remove(memoryItem);
inMemoryItemLookup.remove(memoryItem.objectUUID);
vendorItemLookup.get(workOrder.vendor).remove(memoryItem);
}
Logger.info("item forged:" + workOrder.workOrderID + " (" + workOrder.total_produced + "/" + workOrder.total_to_produce + ")");
if (workOrder.total_produced >= workOrder.total_to_produce) {
Logger.info("workOrder has completed: " + workOrder.workOrderID);
// Persist current items that are currently building for this
// worker after first removing the negative id item from all
// collections.
workOrder.runCompleted = true;
continue;
}
// Create new set in memory items
forgeItems(workOrder);
// enQueue this workOrder again; back into the oven
// until all items for this workOrder are completed.
@@ -296,13 +311,13 @@ public enum ForgeManager implements Runnable {
// Add item to in-memory caches
ForgeManager.inMemoryItemLookup.put(forged_item.objectUUID, forged_item);
workOrder.cooking.add(forged_item);
ForgeManager.vendorItemLookup.computeIfAbsent(workOrder.vendor, k -> new ArrayList<>());
ForgeManager.vendorItemLookup.get(workOrder.vendor).add(forged_item);
inMemoryItemLookup.put(forged_item.objectUUID, forged_item);
vendorItemLookup.computeIfAbsent(workOrder.vendor, k -> new ArrayList<>());
vendorItemLookup.get(workOrder.vendor).add(forged_item);
ForgeManager.vendorWorkOrderLookup.get(workOrder.vendor).add(workOrder);
vendorItemLookup.get(workOrder.vendor).add(forged_item);
vendorWorkOrderLookup.get(workOrder.vendor).add(workOrder);
// Update NPC window