From d736b60c24a190935d7e8823aec8e4b7aed7708f Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 25 Jan 2021 18:09:40 +0800 Subject: [PATCH] =?UTF-8?q?=E9=82=AE=E4=BB=B6bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/mail/MailLogic.java | 23 +++++----- .../java/com/ljsd/jieling/util/ItemUtil.java | 45 +++++++++++-------- 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java index 31eb090d8..2d936e542 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java @@ -248,18 +248,19 @@ public class MailLogic { // 转换二维数组 int[][] itemArr = StringUtil.parseFiledInt2(mailItem.toString()); // 检测卡牌和装备背包 - boolean isLimit = ItemUtil.checkCardAndEquipLimit(user,itemArr); - if (isLimit){ - throw new ErrorCodeException(ErrorCode.ITEM_POCKET_IS_FULL); - } - // 领取道具 - result = ItemUtil.dropByMail(user, itemArr, dropBuilder, BIReason.TAKE_MAIL_REWARD); + int limit = ItemUtil.checkCardAndEquipLimit(user,itemArr); + if (limit == 0){ + // 领取道具 + result = ItemUtil.dropByMail(user, itemArr, dropBuilder, BIReason.TAKE_MAIL_REWARD); - if (result == 1){ - // 改变邮件状态 - mail.setState(Global.MAIL_DRAW_ST_GOT); - mail.setNoUseDeleteTime(TimeUtils.now()+TimeUtils.DAY*Global.MAIL_NOUSE_DELETE_TIME); - mailManager.addMail(mail); + if (result == 1){ + // 改变邮件状态 + mail.setState(Global.MAIL_DRAW_ST_GOT); + mail.setNoUseDeleteTime(TimeUtils.now()+TimeUtils.DAY*Global.MAIL_NOUSE_DELETE_TIME); + mailManager.addMail(mail); + } + }else { + result =2; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 5371ab465..f3731308d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -1682,30 +1682,39 @@ public class ItemUtil { return true; } + /** + * 检测卡牌和道具上限 + * 2021-1-25:装备属于道具一种,所以不再另作处理,做默认 + * @param user + * @param itemArr + * @return + */ + public static int checkCardAndEquipLimit( User user ,int[][] itemArr) { + int result = 0; - public static boolean checkCardAndEquipLimit( User user ,int[][] itemArr) { SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting(); Map itemTypeMap = getItemTypeMap(itemArr); for (Map.Entry entry : itemTypeMap.entrySet()) { - switch (entry.getKey()){ - case GlobalItemType.CARD: - int hasHeroNum = user.getHeroManager().getHeroMap().size(); - if (hasHeroNum+entry.getValue() >= gameSetting.getHeroNumlimit()){ - return true; - } - break; - case GlobalItemType.EQUIP: - EquipManager equipManager = user.getEquipManager(); - int hasEquipNum = equipManager.getEquipMap().size(); - if (hasEquipNum +entry.getValue()>= gameSetting.getEquipNumlimit()){ - return true; - } - break; - default: - break; + if (entry.getKey() == GlobalItemType.CARD){ + int hasHeroNum = user.getHeroManager().getHeroMap().size(); + // 英雄数量超最大上限 + if (hasHeroNum+entry.getValue() > gameSetting.getHeroNumlimit()){ + result++; + } } } - return false; + + // 道具校验 + for(int[] ints:itemArr){ + Item item = user.getItemManager().getItem(ints[0]); + SItem sItem = SItem.getsItemMap().get(ints[0]); + //数量超过了 + if (item.getItemNum()+ints[1] > sItem.getItemNumlimit()){ + result++; + } + } + + return result; } /**