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) if (workOrder.runCanceled || workOrder.runCompleted)
continue; 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 + ")"); Logger.info("item forged:" + workOrder.workOrderID + " (" + workOrder.total_produced + "/" + workOrder.total_to_produce + ")");
if (workOrder.total_produced >= workOrder.total_to_produce) { if (workOrder.total_produced >= workOrder.total_to_produce) {
Logger.info("workOrder has completed: " + workOrder.workOrderID); 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; workOrder.runCompleted = true;
continue; continue;
} }
// Create new set in memory items
forgeItems(workOrder);
// enQueue this workOrder again; back into the oven // enQueue this workOrder again; back into the oven
// until all items for this workOrder are completed. // until all items for this workOrder are completed.
@@ -296,13 +311,13 @@ public enum ForgeManager implements Runnable {
// Add item to in-memory caches // 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<>()); inMemoryItemLookup.put(forged_item.objectUUID, forged_item);
vendorItemLookup.computeIfAbsent(workOrder.vendor, k -> new ArrayList<>());
ForgeManager.vendorItemLookup.get(workOrder.vendor).add(forged_item);
vendorItemLookup.get(workOrder.vendor).add(forged_item); 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 // Update NPC window
+3
View File
@@ -9,12 +9,14 @@
package engine.loot; package engine.loot;
import engine.mbEnums; import engine.mbEnums;
import engine.objects.Item;
import engine.objects.NPC; import engine.objects.NPC;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.concurrent.Delayed; import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -37,6 +39,7 @@ public class WorkOrder implements Delayed {
public long completionTime; public long completionTime;
public boolean runCompleted = false; public boolean runCompleted = false;
public boolean runCanceled = false; public boolean runCanceled = false;
public ArrayList<Item> cooking = new ArrayList<>();
public WorkOrder() { public WorkOrder() {