From 8dceb89111b33d39ad246767394855a285e0218d Mon Sep 17 00:00:00 2001 From: yuanshuai <243578945@qq.com> Date: Thu, 14 Oct 2021 13:47:14 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=99=BD=E9=87=91=E8=A3=85=E5=A4=87?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/dao/ItemManager.java | 39 ++++++++++++ .../ljsd/jieling/logic/hero/HeroLogic.java | 59 ++++++++++++++++--- .../java/com/ljsd/jieling/util/ItemUtil.java | 6 ++ .../main/java/config/SSpiritAnimalBook.java | 4 +- 4 files changed, 97 insertions(+), 11 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java index 8fee7500e..f96d79eae 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java @@ -3,13 +3,52 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.logic.dao.root.User; +import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; public class ItemManager extends MongoBase { private Map itemMap = new ConcurrentHashMap<>(); + ///兼容线上数据,计算统计装备(为了做白金装备图鉴,需要初始化统计一次用户身上所有装备)true:已经计算过了 false:未计算 + private boolean isAbsEquip; + + public boolean getIsAbsEquip() { + return isAbsEquip; + } + public void setAbsEquip(boolean absEquip) { + isAbsEquip = absEquip; + updateString("isAbsEquip", isAbsEquip); + } + + private Map equipBookMap = new HashMap<>(); + + public Map getEquipBookMap() { + return equipBookMap; + } + public void setEquipBookMap(int equipId,long addNum) { + long _num=addNum; + if (this.equipBookMap.containsKey(equipId)){ + _num+=this.equipBookMap.get(equipId); + } + this.equipBookMap.put(equipId,_num); + updateString("equipBookMap." + equipId, _num); + } + private Set equipBookEnabled = new HashSet<>(); + + public Set getEquipBookEnabled() { + return equipBookEnabled; + } + + public void addEquipBookEnabled(int bookId) { + this.equipBookEnabled.add(bookId); + updateString("equipBookEnabled", equipBookEnabled); + } + + public ItemManager() { this.setRootCollection(User._COLLECTION_NAME); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index ba8203505..ba964ee2a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -2306,6 +2306,9 @@ public class HeroLogic{ //魂印图鉴加成 Set equipBookEnabled = equipManager.getEquipBookEnabled(); bonuses(equipBookEnabled,heroAllAttribute); + //白金装备加成 + Set whiteBookEnabled = user.getItemManager().getEquipBookEnabled(); + bonuses(whiteBookEnabled,heroAllAttribute); //英雄皮肤加成 记得判断皮肤过期 int skin = hero.getSkin(); if(skin!=0){ @@ -3877,9 +3880,33 @@ public class HeroLogic{ for (int enabled:user.getEquipManager().getEquipBookEnabled()){ builder.addAllBookEnabled(enabled); } + //添加白金装备羁绊 + for (Integer enabled : user.getItemManager().getEquipBookEnabled()) { + builder.addAllBookEnabled(enabled); + } + for (Integer equip:equipManager.getEquipList()) { builder.addEquipGot(equip); - + } + if (!user.getItemManager().getIsAbsEquip()) { + for (Map.Entry equipEntry : user.getItemManager().getItemMap().entrySet()) { + if (SItem.getsItemMap().get(equipEntry.getKey()).getItemType()==3) { + user.getItemManager().setEquipBookMap(equipEntry.getValue().getItemId(),equipEntry.getValue().getItemNum()); + } + } + for (Map.Entry stringHeroEntry : user.getHeroManager().getHeroMap().entrySet()) { + for (Map.Entry entry : stringHeroEntry.getValue().getEquipByPositionMap().entrySet()) { + user.getItemManager().setEquipBookMap(entry.getValue(),1); + } + } + user.getItemManager().setAbsEquip(true); + } + for (Map.Entry entry : user.getItemManager().getEquipBookMap().entrySet()) { + CommonProto.EquipBookInfo equipBook=CommonProto.EquipBookInfo.newBuilder() + .setEquipId(entry.getKey()) + .setNum(entry.getValue().intValue()) + .build(); + builder.addEquipList(equipBook); } MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.GET_ALL_PROPERTY_INFO_RESPONSE_VALUE,builder.build(),true); } @@ -3900,7 +3927,7 @@ public class HeroLogic{ if(user.getPlayerInfoManager().getLevel() Date: Thu, 14 Oct 2021 15:27:14 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A3=85=E5=A4=87?= =?UTF-8?q?=E5=9B=BE=E9=89=B4=E4=BF=AE=E6=94=B9=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/util/ItemUtil.java | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) 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 e5aa7fbd9..74f4e93df 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -33,6 +33,7 @@ import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; import com.ljsd.jieling.logic.store.newRechargeInfo.PushRechargeType; import com.ljsd.jieling.network.session.ISession; import rpc.protocols.CommonProto; +import rpc.protocols.HeroInfoProto; import rpc.protocols.MessageTypeProto; import rpc.protocols.PlayerInfoProto; import config.SGameSetting; @@ -598,14 +599,18 @@ public class ItemUtil { List sendToFront = new CopyOnWriteArrayList<>(); //超过上限不能直接获得 Map extraItem = new HashMap<>(itemMap.size()); - + ListchangeEquipList=null; for (Map.Entry entry : itemMap.entrySet()) { SItem sItem = SItem.getsItemMap().get (entry.getKey()); if (sItem.getItemBaseType()==6){ equipManager.addEquipList(entry.getKey()); } if (sItem.getItemType()==3){ + if (changeEquipList==null) { + changeEquipList=new ArrayList<>(); + } itemManager.setEquipBookMap(entry.getKey(),entry.getValue()); + changeEquipList.add(entry.getKey()); } long itemNumlimit = sItem.getItemNumlimit(); long itemNum = entry.getValue().intValue(); @@ -683,6 +688,9 @@ public class ItemUtil { //日志记录 ItemLogic.getInstance().addItemLog(new ItemLog(user.getId(),0,user.getPlayerInfoManager().getLevel(),String.valueOf(TimeUtils.now()),reason,sItem.getId(),itemNum,item.getItemNum())); } + //发送装备图鉴修改推送 + SendEquipBookIndication(user.getId(),itemManager,changeEquipList); + for(Map.Entry entry:extraItem.entrySet()){ itemProtoList.add(CBean2Proto.getItem(itemManager.getItemMap().get(entry.getKey()),entry.getValue())); } @@ -723,14 +731,18 @@ public class ItemUtil { List sendToFront = new CopyOnWriteArrayList<>(); //超过上限不能直接获得 Map extraItem = new HashMap<>(itemMap.size()); - + ListchangeEquipList=null; for (Map.Entry entry : itemMap.entrySet()) { SItem sItem = SItem.getsItemMap().get (entry.getKey()); if (sItem.getItemBaseType()==6){ equipManager.addEquipList(entry.getKey()); } if (sItem.getItemType()==3){ + if (changeEquipList==null) { + changeEquipList=new ArrayList<>(); + } itemManager.setEquipBookMap(entry.getKey(),entry.getValue()); + changeEquipList.add(entry.getKey()); } long itemNumlimit = sItem.getItemNumlimit(); @@ -809,6 +821,10 @@ public class ItemUtil { //日志记录 ItemLogic.getInstance().addItemLog(new ItemLog(user.getId(),0,user.getPlayerInfoManager().getLevel(),String.valueOf(TimeUtils.now()),reason,sItem.getId(),itemNum,item.getItemNum())); } + + //发送装备图鉴修改推送 + SendEquipBookIndication(user.getId(),itemManager,changeEquipList); + for(Map.Entry entry:extraItem.entrySet()){ itemProtoList.add(CBean2Proto.getItem(itemManager.getItemMap().get(entry.getKey()),entry.getValue())); } @@ -832,8 +848,25 @@ public class ItemUtil { return 1; } - - + ///发送装备图鉴修改推送 + private static void SendEquipBookIndication(int _uid,ItemManager _itemManage, List_equipList){ + if (_equipList==null||_equipList.isEmpty())return; + ListequipList=new ArrayList<>(); + for (Integer integer : _equipList) { + if (_itemManage.getEquipBookMap().containsKey(integer)) { + CommonProto.EquipBookInfo equipInfo=CommonProto.EquipBookInfo.newBuilder() + .setEquipId(integer) + .setNum(_itemManage.getEquipBookMap().get(integer).intValue()) + .build(); + equipList.add(equipInfo); + } + } + HeroInfoProto.EquipBookIndication build=HeroInfoProto.EquipBookIndication.newBuilder() + .addAllChangeEquipList(equipList) + .build(); + ISession sessionByUid = OnlineUserManager.getSessionByUid(_uid); + MessageUtil.sendIndicationMessage(sessionByUid,1, MessageTypeProto.MessageType.EQUIP_BOOK_INDICATION_VALUE,build,true); + } /** * 玩家升级 //zsx 保留 TODO 由事件分发到 playlogic 去处理 From c95cd0c10b3e75f1ffbf21d1b8a6a9be6b07e183 Mon Sep 17 00:00:00 2001 From: yuanshuai <243578945@qq.com> Date: Thu, 14 Oct 2021 17:10:09 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=BE=81=E7=BB=8A=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=AE=B9=E9=94=99=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index ba964ee2a..4e7a1b72f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -2262,7 +2262,9 @@ public class HeroLogic{ if (!bookEnabled.isEmpty()){ Map config = STableManager.getConfig(SSpiritAnimalBook.class); for(int bootId:bookEnabled){ - int[][] activePara = config.get(bootId).getActivePara(); + SSpiritAnimalBook animalBook=config.get(bootId); + if (animalBook==null)continue; + int[][] activePara = animalBook.getActivePara(); combinedAttribute(activePara,heroAllAttribute); } }