From b2223b8a043e812e5a48ace7a13fc517cb368a11 Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Tue, 16 Apr 2024 18:47:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9B=BE=E9=89=B4=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bookImage/QueryBookImageHandler.java | 21 ++++ .../magicSolder/MagicSolderInfoHandler.java | 4 +- .../logic/activity/AbstractActivity.java | 1 - .../activity/BaublesBookNumActivity.java | 21 +++- .../logic/activity/SuperFundNewActivity.java | 15 ++- .../activity/event/BaublesBookNumEvent.java | 17 ++++ .../ljsd/jieling/logic/dao/EquipManager.java | 30 ++++++ .../ljsd/jieling/logic/dao/ItemManager.java | 49 ++++++++- .../ljsd/jieling/logic/hero/HeroLogic.java | 99 +++++++++++++++---- .../java/com/ljsd/jieling/util/ItemUtil.java | 18 ++-- 10 files changed, 237 insertions(+), 38 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/bookImage/QueryBookImageHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/BaublesBookNumEvent.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/bookImage/QueryBookImageHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/bookImage/QueryBookImageHandler.java new file mode 100644 index 000000000..648cb6a92 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/bookImage/QueryBookImageHandler.java @@ -0,0 +1,21 @@ +package com.ljsd.jieling.handler.bookImage; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.network.session.ISession; +import org.springframework.stereotype.Component; +import rpc.protocols.HeroInfoProto; +import rpc.protocols.MessageTypeProto; + +@Component +public class QueryBookImageHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.QueryBookImageRequest; + } + + @Override + public void processWithProto(ISession iSession, HeroInfoProto.QueryBookImageRequest proto) throws Exception { + HeroLogic.getInstance().queryBookImage(iSession,proto.getType()); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/magicSolder/MagicSolderInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/magicSolder/MagicSolderInfoHandler.java index 51b3232ae..fe4c655dd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/magicSolder/MagicSolderInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/magicSolder/MagicSolderInfoHandler.java @@ -1,13 +1,13 @@ package com.ljsd.jieling.handler.magicSolder; import com.ljsd.jieling.handler.BaseHandler; -import com.ljsd.jieling.logic.fight.DuoduiTowerLogic; import com.ljsd.jieling.logic.magicSoldier.MagicSoldierLogic; import com.ljsd.jieling.network.session.ISession; -import rpc.protocols.FightInfoProto; +import org.springframework.stereotype.Component; import rpc.protocols.MessageTypeProto; import rpc.protocols.PlayerInfoProto; +@Component public class MagicSolderInfoHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java index a45632a65..63752bb9c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -412,7 +412,6 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { .setActivityId(id); builder.setActivityInfo(builder1); MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_PROGRESS_INDICATION_VALUE, builder.build(), true); - } public void sendActivityProgress(User user, Set filterMissId) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BaublesBookNumActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BaublesBookNumActivity.java index f24409023..e8a189fbe 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BaublesBookNumActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BaublesBookNumActivity.java @@ -5,6 +5,10 @@ import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.BaublesBookNumEvent; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; @@ -27,6 +31,19 @@ public class BaublesBookNumActivity extends AbstractActivity { BaublesBookNumActivity(int id) { super(id); + Poster.getPoster().listenEvent(this, BaublesBookNumEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if (!(event instanceof BaublesBookNumEvent)) { + return; + } + BaublesBookNumEvent event1 = (BaublesBookNumEvent) event; + User user = UserManager.getUser(event1.getUid()); + // 客户端推送 + ISession session = OnlineUserManager.getSessionByUid(user.getId()); + sendActivityProgress(session, null); } @Override @@ -50,7 +67,7 @@ public class BaublesBookNumActivity extends AbstractActivity { if (rewardConfigs == null){ return missionInfo; } - int num = user.getEquipManager().getBaublesBookList().size(); + int num = user.getEquipManager().getBaublesBookEnabled().size(); Map progressInfoMap = activityMission.getActivityMissionMap(); for (SActivityRewardConfig config : rewardConfigs) { int missionId = config.getId(); @@ -114,7 +131,7 @@ public class BaublesBookNumActivity extends AbstractActivity { * 验证奖励是否可以领取 */ boolean checkRewardsProcess(User user, SActivityRewardConfig rewardConfig) { - int size = user.getEquipManager().getBaublesBookList().size(); + int size = user.getEquipManager().getBaublesBookEnabled().size(); return size >= rewardConfig.getValues()[0][0]; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java index 3ece8e65c..580d28654 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java @@ -60,6 +60,7 @@ public class SuperFundNewActivity extends AbstractActivity { // 获取信息 SuperBoxEvent event1 = (SuperBoxEvent) event; User user = UserManager.getUser(event1.getUserId()); + LOGGER.info("超值基金接收到监听器...uid={} activityId={}",user.getId(), id); // 活动数据处理 updateValue(user,event1.getGiftId()); // 零点刷新 @@ -98,15 +99,23 @@ public class SuperFundNewActivity extends AbstractActivity { ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); // 礼包是否已购买 if (mission == null || mission.getV() == finish){ + if (mission != null) { + LOGGER.error("超值基金活动退出,活动属于已购买,id:{},v:{}",id,mission.getV()); + } return; } // 旧信息兼容 ReceiveWelfareBag bagInfo = getBagInfo(user); // 已购买基金 - if (bagInfo != null && bagInfo.isBought()){ + if (bagInfo != null && bagInfo.isBuyBefore()){ // 初始化基金 mission.setV(finish); mission.setCreatTime(TimeUtils.now()); + LOGGER.error("超值基金活动,修正活动信息,id:{},v:{}",id,mission.getV()); + }else { + if (bagInfo != null) { + LOGGER.error("超值基金活动退出,礼包未购买,id:{},buy:{}",id,bagInfo.isBuyBefore()); + } } } @@ -198,12 +207,12 @@ public class SuperFundNewActivity extends AbstractActivity { private ReceiveWelfareBag getBagInfo(User user){ SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id); if (activity == null){ - LOGGER.error("活动信息不存在,活动id:{}",id); + LOGGER.error("超值基金活动信息不存在,活动id:{}",id); return null; } AbstractWelfareBag welfareBag = user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap().get(activity.getCanBuyRechargeId()[0]); if (welfareBag == null){ - LOGGER.info("礼包未购买,活动id:{},礼包id:{}",id,activity.getCanBuyRechargeId()[0]); + LOGGER.info("超值基金活动礼包未购买,活动id:{},礼包id:{}",id,activity.getCanBuyRechargeId()[0]); return null; } return (ReceiveWelfareBag)welfareBag; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/BaublesBookNumEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/BaublesBookNumEvent.java new file mode 100644 index 000000000..3d1101d99 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/BaublesBookNumEvent.java @@ -0,0 +1,17 @@ +package com.ljsd.jieling.logic.activity.event; + +public class BaublesBookNumEvent implements IEvent { + private int uid; + + public BaublesBookNumEvent(int uid) { + this.uid = uid; + } + + public int getUid() { + return uid; + } + + public void setUid(int uid) { + this.uid = uid; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java index 660a85de4..7c71c6c71 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java @@ -18,6 +18,8 @@ public class EquipManager extends MongoBase { private Set baublesBookList = new HashSet<>();// 全部法宝图鉴 private Set baublesBookEnabled = new HashSet<>();// 法宝激活图鉴 private Set soulGealList = new HashSet<>();// 魂印列表 + private Set faxiangRecordList = new HashSet<>();// 全部法相图鉴 + private Set faxiangEnabled = new HashSet<>();// 法相激活图鉴 private Map gemNewMap = new HashMap<>();// 潜能列表 private int soulEquipPool;//占星装备卡池 @@ -222,4 +224,32 @@ public class EquipManager extends MongoBase { this.baublesBookList.add(id); updateString("baublesBookEnabled",baublesBookEnabled); } + + public Set getFaxiangRecordList() { + return faxiangRecordList; + } + + public void setFaxiangRecordList(Set faxiangRecordList) { + this.faxiangRecordList = faxiangRecordList; + updateString("faxiangRecordList",faxiangRecordList); + } + + public void addFaxiangRecord(int id) { + this.faxiangRecordList.add(id); + updateString("faxiangRecordList",faxiangRecordList); + } + + public Set getFaxiangEnabled() { + return faxiangEnabled; + } + + public void setFaxiangEnabled(Set faxiangEnabled) { + this.faxiangEnabled = faxiangEnabled; + updateString("baublesBookEnabled",baublesBookEnabled); + } + + public void addFaxiangEnabled(int id) { + this.faxiangEnabled.add(id); + updateString("faxiangEnabled",faxiangEnabled); + } } 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 5c877d332..c0e524ca6 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 @@ -13,8 +13,12 @@ public class ItemManager extends MongoBase { private Map itemMap = new ConcurrentHashMap<>(); - ///兼容线上数据,计算统计装备(为了做白金装备图鉴,需要初始化统计一次用户身上所有装备)true:已经计算过了 false:未计算 - private boolean isAbsEquip; + private boolean isAbsEquip;//兼容线上数据,计算统计装备(为了做白金装备图鉴,需要初始化统计一次用户身上所有装备)true:已经计算过了 false:未计算 + private Map equipBookMap = new HashMap<>(); + private Set equipBookEnabled = new HashSet<>(); + + private Set huashenRecordList = new HashSet<>();// 全部身外化身图鉴 + private Set huashenEnabled = new HashSet<>();// 身外化身激活图鉴 public boolean getIsAbsEquip() { return isAbsEquip; @@ -24,8 +28,6 @@ public class ItemManager extends MongoBase { updateString("isAbsEquip", isAbsEquip); } - private Map equipBookMap = new HashMap<>(); - public Map getEquipBookMap() { return equipBookMap; } @@ -37,7 +39,16 @@ public class ItemManager extends MongoBase { this.equipBookMap.put(equipId,_num); updateString("equipBookMap." + equipId, _num); } - private Set equipBookEnabled = new HashSet<>(); + + public void setEquipBookMap(Map equipBookMap) { + this.equipBookMap = equipBookMap; + updateString("equipBookMap", equipBookMap); + } + + public void setEquipBookEnabled(Set equipBookEnabled) { + this.equipBookEnabled = equipBookEnabled; + updateString("equipBookEnabled", equipBookEnabled); + } public Set getEquipBookEnabled() { return equipBookEnabled; @@ -83,4 +94,32 @@ public class ItemManager extends MongoBase { addItem(item); return item; } + + public Set getHuashenRecordList() { + return huashenRecordList; + } + + public void setHuashenRecordList(Set huashenRecordList) { + this.huashenRecordList = huashenRecordList; + updateString("huashenRecordList", huashenRecordList); + } + + public void addHuashenRecord(int id) { + this.huashenRecordList.add(id); + updateString("huashenRecordList", huashenRecordList); + } + + public Set getHuashenEnabled() { + return huashenEnabled; + } + + public void setHuashenEnabled(Set huashenEnabled) { + this.huashenEnabled = huashenEnabled; + updateString("huashenEnabled", huashenEnabled); + } + + public void addHuashenEnabled(int id) { + this.huashenEnabled.add(id); + updateString("huashenEnabled", huashenEnabled); + } } 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 21e794cb8..a6c76e473 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 @@ -361,23 +361,7 @@ public class HeroLogic { } } - private static MagicSoldierManager magicSoldierCheck(int bookId, User user, int[][] tamers) throws ErrorCodeException { - MagicSoldierManager soldierManager = user.getMagicSoldierManager(); - if (soldierManager.getMagicSoldierBook().contains(bookId)) { - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - for (int[] soldier : tamers) { - if (!soldierManager.getMagicSoldierRecord().contains(soldier[0])) { - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - } - return soldierManager; - } - - private static Set getHeroHands(int bookId, HeroManager heroManager) throws ErrorCodeException { - if (heroManager.getHeroHandBookEnabled().contains(bookId)) { - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } + private static Set getHeroHands(HeroManager heroManager) { Map heroHandBook = heroManager.getHeroHandBook(); Set hero = new HashSet<>(); //将拥有的神将放到set集和中 @@ -5189,7 +5173,10 @@ public class HeroLogic { switch (bookConfig.getFetterType()) { case 1://神将激活 - Set hero = getHeroHands(bookId, heroManager); + if (heroManager.getHeroHandBookEnabled().contains(bookId)) { + throw new ErrorTableException(165);//已激活 + } + Set hero = getHeroHands(heroManager); //判断羁绊神将是否在集合 for (int[] tmp : tamers) { if (!hero.contains(tmp[0])) { @@ -5256,6 +5243,31 @@ public class HeroLogic { } } equipManager.addBaublesBookEnabled(bookId); + Poster.getPoster().dispatchEvent(new BaublesBookNumEvent(user.getId())); + break; + case 7://法相图鉴激活 + Set faxiangEnabled = equipManager.getFaxiangEnabled(); + if (faxiangEnabled.contains(bookId)) { + throw new ErrorTableException(165);//已激活 + } + for (int[] equip : tamers) { + if (!equipManager.getFaxiangRecordList().contains(equip[0])){ + throw new ErrorTableException(166);//条件不足 + } + } + equipManager.addFaxiangEnabled(bookId); + break; + case 8://身外化身图鉴激活 + Set huashenEnabled = itemManager.getHuashenEnabled(); + if (huashenEnabled.contains(bookId)) { + throw new ErrorTableException(165);//已激活 + } + for (int[] equip : tamers) { + if (!itemManager.getHuashenRecordList().contains(equip[0])){ + throw new ErrorTableException(166);//条件不足 + } + } + itemManager.addHuashenEnabled(bookId); break; default: break; @@ -6524,7 +6536,7 @@ public class HeroLogic { * @param averageNum * @return */ - public int getAverageLevel(User user, int averageNum) throws ErrorCodeException { + public int getAverageLevel(User user, int averageNum) { HeroManager heroManager = user.getHeroManager(); // 获取平均数量 int num = Math.min(heroManager.getHeroMap().size(), averageNum); @@ -7322,6 +7334,55 @@ public class HeroLogic { heroManager.putTrumpBookStar(bookId, result); } + /** + * 查询图鉴信息 + * @param iSession + * @param type + * @throws Exception + */ + public void queryBookImage(ISession iSession, int type) throws Exception { + User user = UserManager.getUser(iSession.getUid()); + HeroInfoProto.QueryBookImageResponse.Builder builder = HeroInfoProto.QueryBookImageResponse.newBuilder(); + HeroManager heroManager = user.getHeroManager(); + EquipManager equipManager = user.getEquipManager(); + PokemonManager pokemonManager = user.getPokemonManager(); + ItemManager itemManager = user.getItemManager(); + MagicSoldierManager soldierManager = user.getMagicSoldierManager(); + // 神将 + if (type == 0 || type == 1){ + builder.addAllBookImgIds(getHeroHands(heroManager)); + } + // 魂印 + if (type == 0 || type == 2){ + builder.addAllBookImgIds(equipManager.getSoulGealList()); + } + // 灵兽 + if (type == 0 || type == 3){ + builder.addAllBookImgIds(pokemonManager.getPokemonGot()); + } + // 装备 + if (type == 0 || type == 4){ + builder.addAllBookImgIds(itemManager.getEquipBookMap().keySet()); + } + // 神兵 + if (type == 0 || type == 5){ + builder.addAllBookImgIds(soldierManager.getMagicSoldierRecord()); + } + // 法宝 + if (type == 0 || type == 6){ + builder.addAllBookImgIds(equipManager.getBaublesBookList()); + } + // 法相 + if (type == 0 || type == 7){ + builder.addAllBookImgIds(equipManager.getFaxiangRecordList()); + } + // 身外化身 + if (type == 0 || type == 8){ + builder.addAllBookImgIds(itemManager.getHuashenRecordList()); + } + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.QueryBookImageResponse_VALUE, builder.build(), true); + } + public static class Instance { public final static HeroLogic instance = new HeroLogic(); } 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 86ffd40c3..b03074574 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -775,7 +775,8 @@ public class ItemUtil { equipManager.addSoulGeal(itemId); user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GOT_SOUL_MARK, id, (int) itemNum); break; - case GlobalItemType.TRANSFORMATION_CARD://东海寻仙 + case GlobalItemType.TRANSFORMATION_CARD://身外化身 + itemManager.addHuashenRecord(itemId); user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GET_TRANSFIGURATION_CARD_NUM, sItem.getQuantity(), (int) itemNum); break; default:break; @@ -1238,11 +1239,16 @@ public class ItemUtil { EquipManager equipManager = user.getEquipManager(); SItem item = SItem.getsItemMap().get(equipId); PropertyItem equip; - if (item.getItemType() == GlobalItemType.ESPECIAL_EQUIP){ - equip = new Baubles(user.getId(), equipId); - user.getEquipManager().addBaublesBookList(equipId); - }else { - equip = new PropertyItem(user.getId(), equipId); + switch (item.getItemType()){ + case GlobalItemType.ESPECIAL_EQUIP: + equip = new Baubles(user.getId(), equipId); + equipManager.addBaublesBookList(equipId); + break; + case GlobalItemType.FAXIANG_EQUIP: + equipManager.addFaxiangRecord(equipId); + default: + equip = new PropertyItem(user.getId(), equipId); + break; } equipManager.addEquip(equip); jewelList.add(CBean2Proto.getPropertyEquipProto(equip));