forked from MagicBane/Server
Work on virtual item handling
This commit is contained in:
@@ -74,19 +74,22 @@ public enum ForgeManager implements Runnable {
|
|||||||
if (workOrder.runCompleted)
|
if (workOrder.runCompleted)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Persist virtual items that were currently cooking
|
// Move current cooking batch to vendor inventory
|
||||||
|
|
||||||
persistItems(workOrder);
|
completeWorkOrderBatch(workOrder);
|
||||||
|
|
||||||
// Create new set of in-memory only virtual items
|
// Create new set of in-memory only virtual items
|
||||||
|
|
||||||
forgeItems(workOrder);
|
forgeWorkerOrderBatch(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.
|
||||||
|
|
||||||
workOrder.completionTime = System.currentTimeMillis() + workOrder.rollingDuration;
|
workOrder.completionTime = System.currentTimeMillis() + workOrder.rollingDuration;
|
||||||
forge.add(workOrder);
|
forge.add(workOrder);
|
||||||
|
|
||||||
|
// Debugging
|
||||||
|
|
||||||
Logger.info(workOrder.toString());
|
Logger.info(workOrder.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -125,7 +128,7 @@ public enum ForgeManager implements Runnable {
|
|||||||
|
|
||||||
// Create in-memory items and add to collections
|
// Create in-memory items and add to collections
|
||||||
|
|
||||||
forgeItems(workOrder);
|
forgeWorkerOrderBatch(workOrder);
|
||||||
|
|
||||||
Logger.info(workOrder.toString());
|
Logger.info(workOrder.toString());
|
||||||
forge.add(workOrder);
|
forge.add(workOrder);
|
||||||
@@ -299,15 +302,12 @@ public enum ForgeManager implements Runnable {
|
|||||||
return forgedItem;
|
return forgedItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void persistItems(WorkOrder workOrder) {
|
public static void completeWorkOrderBatch(WorkOrder workOrder) {
|
||||||
|
|
||||||
ArrayList<Item> toRemove = new ArrayList<>();
|
ArrayList<Item> toRemove = new ArrayList<>();
|
||||||
Item completed_item;
|
|
||||||
|
|
||||||
for (Item workOrderItem : workOrder.cooking) {
|
for (Item workOrderItem : workOrder.cooking) {
|
||||||
|
|
||||||
toRemove.add(workOrderItem);
|
|
||||||
|
|
||||||
// Remove the virtual items from the forge window
|
// Remove the virtual items from the forge window
|
||||||
|
|
||||||
ItemProductionMsg outMsg = new ItemProductionMsg(workOrder.vendor.building, workOrder.vendor, workOrderItem, mbEnums.ProductionActionType.CONFIRM_SETPRICE, true);
|
ItemProductionMsg outMsg = new ItemProductionMsg(workOrder.vendor.building, workOrder.vendor, workOrderItem, mbEnums.ProductionActionType.CONFIRM_SETPRICE, true);
|
||||||
@@ -315,23 +315,25 @@ public enum ForgeManager implements Runnable {
|
|||||||
ItemProductionMsg outMsg1 = new ItemProductionMsg(workOrder.vendor.building, workOrder.vendor, workOrderItem, mbEnums.ProductionActionType.CONFIRM_DEPOSIT, true);
|
ItemProductionMsg outMsg1 = new ItemProductionMsg(workOrder.vendor.building, workOrder.vendor, workOrderItem, mbEnums.ProductionActionType.CONFIRM_DEPOSIT, true);
|
||||||
DispatchMessage.dispatchMsgToInterestArea(workOrder.vendor, outMsg1, mbEnums.DispatchChannel.SECONDARY, 700, false, false);
|
DispatchMessage.dispatchMsgToInterestArea(workOrder.vendor, outMsg1, mbEnums.DispatchChannel.SECONDARY, 700, false, false);
|
||||||
|
|
||||||
// Turn the virtual item into a real one and add to the vendor inventory
|
// add to the vendor inventory
|
||||||
|
|
||||||
completed_item = DbManager.ItemQueries.PERSIST(workOrderItem);
|
workOrder.vendor.charItemManager.addItemToInventory(workOrderItem);
|
||||||
workOrder.vendor.charItemManager.addItemToInventory(completed_item);
|
|
||||||
|
toRemove.add(workOrderItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the negativeID virtual item from all collections.
|
// Remove the negativeID virtual item from all collections
|
||||||
|
// other than the virtual item lookup map. Item will be
|
||||||
|
// persisted when bought/taken from vendor.
|
||||||
|
|
||||||
for (Item memoryItem : toRemove) {
|
for (Item memoryItem : toRemove) {
|
||||||
workOrder.cooking.remove(memoryItem);
|
workOrder.cooking.remove(memoryItem);
|
||||||
inMemoryItemLookup.remove(memoryItem.objectUUID);
|
|
||||||
vendorItemLookup.get(workOrder.vendor).remove(memoryItem);
|
vendorItemLookup.get(workOrder.vendor).remove(memoryItem);
|
||||||
itemWorkOrderLookup.remove(memoryItem);
|
itemWorkOrderLookup.remove(memoryItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void forgeItems(WorkOrder workOrder) {
|
public static void forgeWorkerOrderBatch(WorkOrder workOrder) {
|
||||||
|
|
||||||
for (int i = 0; i < workOrder.slots_used; ++i) {
|
for (int i = 0; i < workOrder.slots_used; ++i) {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user