|
|
|
@ -32,10 +32,13 @@ public enum ForgeManager implements Runnable {
@@ -32,10 +32,13 @@ public enum ForgeManager implements Runnable {
|
|
|
|
|
// Class implements forge rolling mechanics for Magicbane.
|
|
|
|
|
//
|
|
|
|
|
// .submit(workOrder) may be called from any thread: (ItemProductionMsgHandler).
|
|
|
|
|
// Concurrency is managed by the same lock used by the warehouse (city.cityTransactionLock).
|
|
|
|
|
// Concurrency is managed by same lock used for warehouse (city.cityTransactionLock).
|
|
|
|
|
// WorkOrders are persisted then reconstituted at bootstrap using table dyn.workorders.
|
|
|
|
|
// Forge window (ManageNPCMsg) uses item.upgradeDate to serialize completion time.
|
|
|
|
|
//
|
|
|
|
|
// Replaces garbage code that looked as if written by a mental patient with face boils.
|
|
|
|
|
//
|
|
|
|
|
// @TODO Reuse same set of virtual items for each workOrder cycle.
|
|
|
|
|
|
|
|
|
|
FORGE_MANAGER; |
|
|
|
|
|
|
|
|
@ -52,8 +55,7 @@ public enum ForgeManager implements Runnable {
@@ -52,8 +55,7 @@ public enum ForgeManager implements Runnable {
|
|
|
|
|
|
|
|
|
|
while (true) { |
|
|
|
|
|
|
|
|
|
// .forge is a delayQueue (blocking priority queue using an epoc sort)
|
|
|
|
|
// workOrders are popped and processed when their completion time has passed.
|
|
|
|
|
// workOrders are popped then processed once completion time has passed.
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
workOrder = forge.take(); |
|
|
|
|