From 888761b2f018f4268bf8bae830a345841bb21547 Mon Sep 17 00:00:00 2001 From: gaojie Date: Wed, 24 Apr 2019 14:18:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/item/ItemLogic.java | 91 ++++++++++++------- 1 file changed, 59 insertions(+), 32 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index 2cec030cc..255dc0075 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -41,25 +41,21 @@ public class ItemLogic { int uid = iSession.getUid(); User user = UserManager.getUser(uid); int msgId = MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE; + String erroMags = checkItemResolve(itemList); + if (!erroMags.isEmpty()){ + MessageUtil.sendErrorResponse(iSession,0,msgId,erroMags); + } StringBuilder cost = new StringBuilder(); StringBuilder reward = new StringBuilder(); for (CommonProto.Item item :itemList){ if (cost.length() == 0){ cost = new StringBuilder(item.getItemId() + "#" + item.getItemNum()); SItem sItem = SItem.getsItemMap().get(item.getItemId()); - if (sItem.getIfResolve() ==0){ - MessageUtil.sendErrorResponse(iSession,0,msgId,"物品中有不可分解道具"); - return; - } - reward = new StringBuilder(sItem.getResolveReward()); + reward = getStringBuilder(reward, item.getItemNum(), sItem); }else{ cost.append("|").append(item.getItemId()).append("#").append(item.getItemNum()); SItem sItem = SItem.getsItemMap().get(item.getItemId()); - if (sItem.getIfResolve() ==0){ - MessageUtil.sendErrorResponse(iSession,0,msgId,""); - return; - } - reward.append("#").append(sItem.getResolveReward()); + reward = getStringBuilder(reward, item.getItemNum(), sItem); } } int[][] costItemArr = StringUtil.parseFiledInt2(cost.toString()); @@ -72,6 +68,27 @@ public class ItemLogic { sendUseAndPriceItemMessage(iSession, msgId, drop); } + private StringBuilder getStringBuilder(StringBuilder reward, int itemNum, SItem sItem) { + for (int i =0; i < itemNum; i++){ + if (reward.length() == 0){ + reward = new StringBuilder(sItem.getResolveReward()); + }else{ + reward.append("#").append(sItem.getResolveReward()); + } + } + return reward; + } + + private String checkItemResolve(List itemList) { + for (CommonProto.Item item :itemList){ + SItem sItem = SItem.getsItemMap().get(item.getItemId()); + if (sItem.getIfResolve() ==0){ + return "物品中有不可分解道具"; + } + } + return ""; + } + private void sendUseAndPriceItemMessage(ISession iSession, int msgId, CommonProto.Drop.Builder drop) { PlayerInfoProto.UseAndPriceItemResponse useAndPriceItemResponse = PlayerInfoProto.UseAndPriceItemResponse.newBuilder() .setDrop(drop) @@ -113,31 +130,41 @@ public class ItemLogic { User user = UserManager.getUser(uid); EquipManager equipManager = user.getEquipManager(); StringBuilder reward = new StringBuilder(); - if (equipIdsList.size() != 0){ - for (String equipId :equipIdsList){ - Equip equip = equipManager.getEquipMap().get(equipId); - if (equip == null){ - MessageUtil.sendErrorResponse(iSession,0,msgId,""); - return; - } - if (!StringUtil.isEmpty(equip.getHeroId())){ - MessageUtil.sendErrorResponse(iSession,0,msgId,""); - return; - } - SItem sItem = SItem.getsItemMap().get(equip.getEquipId()); - if (sItem.getIfResolve() ==0){ - MessageUtil.sendErrorResponse(iSession,0,msgId,""); - return; - } - equipManager.remove(equipId); - if (reward.length() == 0){ - reward = new StringBuilder(sItem.getResolveReward()); - }else{ - reward.append("#").append(sItem.getResolveReward()); - } + String erroMags = checkEquipResolve(equipIdsList,equipManager); + if (!erroMags.isEmpty()){ + MessageUtil.sendErrorResponse(iSession,0,msgId,erroMags); + } + for (String equipId : equipIdsList) { + Equip equip = equipManager.getEquipMap().get(equipId); + SItem sItem = SItem.getsItemMap().get(equip.getEquipId()); + equipManager.remove(equipId); + if (reward.length() == 0) { + reward = new StringBuilder(sItem.getResolveReward()); + } else { + reward.append("#").append(sItem.getResolveReward()); } } CommonProto.Drop.Builder drop = ItemUtil.drop(user,StringUtil.parseFiledInt(reward.toString()),1,0); sendUseAndPriceItemMessage(iSession, msgId, drop); } + + private String checkEquipResolve(List equipIdsList,EquipManager equipManager) { + if (equipIdsList.size() != 0){ + return "无可分解装备"; + } + for (String equipId :equipIdsList){ + Equip equip = equipManager.getEquipMap().get(equipId); + if (equip == null){ + return "无该装备"; + } + if (!StringUtil.isEmpty(equip.getHeroId())){ + return "已穿戴"; + } + SItem sItem = SItem.getsItemMap().get(equip.getEquipId()); + if (sItem.getIfResolve() ==0){ + return "不可分解"; + } + } + return ""; + } }