diff --git a/src/engine/net/client/handlers/ItemProductionMsgHandler.java b/src/engine/net/client/handlers/ItemProductionMsgHandler.java index b998f858..0896acb8 100644 --- a/src/engine/net/client/handlers/ItemProductionMsgHandler.java +++ b/src/engine/net/client/handlers/ItemProductionMsgHandler.java @@ -38,6 +38,79 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler { super(ItemProductionMsg.class); } + @Override + protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException { + + // Member variable declaration + + PlayerCharacter player; + NPC vendorNPC; + ItemProductionMsg msg; + Dispatch dispatch; + + // Member variable assignment + + msg = (ItemProductionMsg) baseMsg; + player = origin.getPlayerCharacter(); + + if (player == null) + return true; + + // Grab reference to vendor we are interacting with + + vendorNPC = (NPC) DbManager.getObject(mbEnums.GameObjectType.NPC, msg.npcUUID); + + // Oops? + + if (vendorNPC == null) + return true; + + // Process Request + + switch (msg.actionType) { + + case PRODUCE: + boolean isRandom = false; + if (msg.unknown03 != 0 && msg.pToken == 0 && msg.sToken == 0) + isRandom = true; + //Create Multiple Item Function.. Fill all empty slots + if (msg.size > 0) { + int emptySlots = vendorNPC.getRank() - vendorNPC.getRolling().size(); + if (emptySlots > 0) { + for (int i = 0; i < emptySlots; i++) { + vendorNPC.produceItem(player.getObjectUUID(), msg.total_to_produce, isRandom, msg.pToken, msg.sToken, msg.name, msg.templateID); + } + } + } else + vendorNPC.produceItem(player.getObjectUUID(), msg.total_to_produce, isRandom, msg.pToken, msg.sToken, msg.name, msg.templateID); + break; + case JUNK: + junkItem(msg.templateID, vendorNPC, origin); + break; + case RECYCLE: + recycleItem(msg.items, vendorNPC, origin); + msg.actionType = mbEnums.ProductionActionType.TAKE; + dispatch = Dispatch.borrow(player, msg); + DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY); + break; + case COMPLETE: + vendorNPC.completeItem(msg.templateID); + break; + case DEPOSIT: + depositItem(msg.templateID, vendorNPC, origin); + break; + case SETPRICE: + setItemPrice(msg.itemType, msg.templateID, msg.itemPrice, vendorNPC, origin); + break; + case TAKE: + takeItem(msg.items, vendorNPC, origin); + dispatch = Dispatch.borrow(player, msg); + DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY); + break; + } + return true; + } + private static void setItemPrice(int itemType, int itemUUID, int itemPrice, NPC vendor, ClientConnection origin) { Item targetItem; @@ -323,86 +396,6 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler { player.charItemManager.updateInventory(); - // Update NPC inventory to client - - } - // Method removes item from an NPC's inventory and transferes it to a player - - @Override - protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException { - - // Member variable declaration - - PlayerCharacter player; - NPC vendorNPC; - ItemProductionMsg msg; - Dispatch dispatch; - - // Member variable assignment - - msg = (ItemProductionMsg) baseMsg; - player = origin.getPlayerCharacter(); - - if (player == null) - return true; - - // Grab reference to vendor we are interacting with - - vendorNPC = (NPC) DbManager.getObject(mbEnums.GameObjectType.NPC, msg.npcUUID); - - // Oops? - - if (vendorNPC == null) - return true; - - // Process Request - - switch (msg.actionType) { - - case PRODUCE: - boolean isRandom = false; - if (msg.unknown03 != 0 && msg.pToken == 0 && msg.sToken == 0) - isRandom = true; - //Create Multiple Item Function.. Fill all empty slots - if (msg.size > 0) { - int emptySlots = vendorNPC.getRank() - vendorNPC.getRolling().size(); - if (emptySlots > 0) { - for (int i = 0; i < emptySlots; i++) { - vendorNPC.produceItem(player.getObjectUUID(), msg.total_to_produce, isRandom, msg.pToken, msg.sToken, msg.name, msg.templateID); - } - } - } else - vendorNPC.produceItem(player.getObjectUUID(), msg.total_to_produce, isRandom, msg.pToken, msg.sToken, msg.name, msg.templateID); - break; - case JUNK: - junkItem(msg.templateID, vendorNPC, origin); - break; - case RECYCLE: - recycleItem(msg.items, vendorNPC, origin); - msg.actionType = mbEnums.ProductionActionType.TAKE; - dispatch = Dispatch.borrow(player, msg); - DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY); - break; - case COMPLETE: - vendorNPC.completeItem(msg.templateID); - break; - case DEPOSIT: - depositItem(msg.templateID, vendorNPC, origin); - break; - case SETPRICE: - setItemPrice(msg.itemType, msg.templateID, msg.itemPrice, vendorNPC, origin); - break; - case TAKE: - takeItem(msg.items, vendorNPC, origin); - dispatch = Dispatch.borrow(player, msg); - DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY); - break; - } - return true; - } - - // Method handles rolling item requests from the client - }