Slot tracking update

This commit is contained in:
2024-04-22 00:25:16 -04:00
parent 98b73d978a
commit 2de1f78f22
2 changed files with 13 additions and 6 deletions
+3 -6
View File
@@ -20,10 +20,7 @@ import org.pmw.tinylog.Logger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.DelayQueue;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
public enum ForgeManager implements Runnable {
@@ -32,8 +29,8 @@ public enum ForgeManager implements Runnable {
private static final BlockingQueue<WorkOrder> forge = new DelayQueue<>();
public static final AtomicInteger wordOrderCounter = new AtomicInteger(0);
public static final HashMap<NPC, ArrayList<WorkOrder>> vendorWorkOrderLookup = new HashMap<>();
public static final HashMap<Item, WorkOrder> itemWorkOrderLookup = new HashMap<>();
public static final ConcurrentHashMap<NPC, ArrayList<WorkOrder>> vendorWorkOrderLookup = new ConcurrentHashMap<>();
public static final ConcurrentHashMap<Item, WorkOrder> itemWorkOrderLookup = new ConcurrentHashMap<>();
@Override
@@ -146,6 +146,11 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler {
ForgeManager.itemWorkOrderLookup.remove(virtualItem);
DbManager.removeFromCache(virtualItem);
// If this is the last item then remove the workOrder from the game
if (workOrder.cooking.isEmpty())
ForgeManager.vendorWorkOrderLookup.get(vendor).remove(workOrder);
// Persist item and add to vendor inventory
Item completedItem = DbManager.ItemQueries.PERSIST(virtualItem);
@@ -388,6 +393,11 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler {
DbManager.removeFromCache(virtualItem);
ForgeManager.itemWorkOrderLookup.remove(virtualItem);
// If this is the last item then remove the workOrder from the game
if (workOrder.cooking.isEmpty())
ForgeManager.vendorWorkOrderLookup.get(vendor).remove(workOrder);
// Refresh vendor's inventory to client
outMsg = new ManageNPCMsg(vendor);