From 58cb744e2e06115ef87c8025972839e021b722c1 Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Mon, 21 Dec 2020 16:05:19 +0800 Subject: [PATCH] =?UTF-8?q?=E9=B8=BF=E8=92=99=E4=BF=A1=E6=81=AF=E5=8D=95?= =?UTF-8?q?=E7=8B=AC=E8=8E=B7=E5=8F=96=20=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/handler/GetPlayerInfoHandler.java | 43 +-------- .../hero/HongmengGetInfoRequestHandler.java | 21 +++++ .../ljsd/jieling/logic/hero/HeroLogic.java | 87 ++++++++++++++++++- 3 files changed, 108 insertions(+), 43 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/hero/HongmengGetInfoRequestHandler.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index 003067bef..c3e16a504 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -30,6 +30,7 @@ import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.HeroInfoProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.PlayerInfoProto; import com.ljsd.jieling.thread.task.RPCServerTask; @@ -190,44 +191,6 @@ public class GetPlayerInfoHandler extends BaseHandler{ user.getPlayerInfoManager().getMonthCard().put(Global.LMONTHCARDID, (int) (System.currentTimeMillis() / 1000)); Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.RECHARGE_BUY.getType(),Global.LMONTHCARDID)); } - // 刷新鸿蒙阵 - HeroLogic.getInstance().addOrUpdateHongmeng(user); - // 组装鸿蒙阵信息 - List hongmengHeroInfos = new ArrayList<>(); - Map resonances = heroManager.getResonances(); - Map resonancesTime = heroManager.getResonancesTime(); - for (Map.Entry entry : resonances.entrySet()) { - PlayerInfoProto.HongmengHeroInfo hongmengHeroInfo = PlayerInfoProto.HongmengHeroInfo.newBuilder() - .setGridId(entry.getKey()) - .setHeroId(entry.getValue()) - .setTime(resonancesTime.containsKey(entry.getKey()) ? (resonancesTime.get(entry.getKey()) - now < 0 ? 0 : (resonancesTime.get(entry.getKey()) - now) / 1000) : 0) - .build(); - hongmengHeroInfos.add(hongmengHeroInfo); - } - // 组装鸿蒙守卫或者鸿蒙使者信息 - List hongmengGuardsProto = new ArrayList<>(); - Map hongmengGuards = heroManager.getHongmengGuards(); - Map hongmengGuardTime = heroManager.getHongmengGuardTime(); - for (Map.Entry entry : hongmengGuards.entrySet()) { - PlayerInfoProto.HongmengHeroInfo hongmengHeroInfo = PlayerInfoProto.HongmengHeroInfo.newBuilder() - .setGridId(entry.getKey()) - .setHeroId(entry.getValue()) - .setTime(hongmengGuardTime.containsKey(entry.getKey()) ? (hongmengGuardTime.get(entry.getKey()) - now < 0 ? 0 : (hongmengGuardTime.get(entry.getKey()) - now) / 1000) : 0) - .build(); - hongmengGuardsProto.add(hongmengHeroInfo); - } - - List hongmengAdditions = new ArrayList<>(); - Map resonanceAddition = heroManager.getResonanceAddition(); - for (Map.Entry entry : resonanceAddition.entrySet()) { - PlayerInfoProto.HongmengAddition hongmengAddition = PlayerInfoProto.HongmengAddition - .newBuilder() - .setAdditionType(entry.getKey().getPropertyId()) - .setValue(entry.getValue().value) - .setHeroTid(entry.getValue().heroTid) - .build(); - hongmengAdditions.add(hongmengAddition); - } StoreLogic.reloadStoreInfo(user,7);//重载功能商店 PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse = PlayerInfoProto.GetPlayerInfoResponse.newBuilder() @@ -262,10 +225,6 @@ public class GetPlayerInfoHandler extends BaseHandler{ .setExpeditionLeve(user.getExpeditionManager().getExpeditionLeve()) .setHadLuckTime( user.getPlayerInfoManager().getLuckWheelLimitTime()) .setHadAdvanceLuckTime(user.getPlayerInfoManager().getLuckAdvanceWheelLimitTime()) - .addAllHongmengGuards(hongmengGuardsProto) - .setHongmengTablet(heroManager.getHongmengTablet()) - .addAllHongmengHeroInfos(hongmengHeroInfos) - .addAllHongmengAdditions(hongmengAdditions) .build(); ReportUtil.onReportEvent(user, ReportEventEnum.APP_LOGIN.getType()); try { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/HongmengGetInfoRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/HongmengGetInfoRequestHandler.java new file mode 100644 index 000000000..856d8f8e4 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/HongmengGetInfoRequestHandler.java @@ -0,0 +1,21 @@ +package com.ljsd.jieling.handler.hero; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.HeroInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +@Component +public class HongmengGetInfoRequestHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.HONGMENG_GET_INFO_REQUEST; + } + + @Override + public void processWithProto(ISession session, HeroInfoProto.ResonanceRequest proto) throws Exception { + HeroLogic.getInstance().getHongmengInfo(session, MessageTypeProto.MessageType.HONGMENG_GET_INFO_RESPONSE); + } +} 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 bd0689f1a..b58f191b1 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 @@ -43,6 +43,7 @@ import util.StringUtil; import util.TimeUtils; import java.math.BigDecimal; +import java.sql.Time; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; @@ -3410,6 +3411,64 @@ public class HeroLogic{ } // ================共鸣、鸿蒙碑========= + + /** + * 获取鸿蒙阵信息 + * @param session + * @param messageType + * @throws Exception + */ + public void getHongmengInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); + HeroManager heroManager = user.getHeroManager(); + // 组装鸿蒙守卫或者鸿蒙使者信息 + // 刷新鸿蒙阵 + addOrUpdateHongmeng(user); + // 组装鸿蒙阵信息 + List hongmengHeroInfos = new ArrayList<>(); + Map resonances = heroManager.getResonances(); + Map resonancesTime = heroManager.getResonancesTime(); + long now = TimeUtils.now(); + for (Map.Entry entry : resonances.entrySet()) { + HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.HongmengHeroInfo.newBuilder() + .setGridId(entry.getKey()) + .setHeroId(entry.getValue()) + .setTime(resonancesTime.containsKey(entry.getKey()) ? (resonancesTime.get(entry.getKey()) - now < 0 ? 0 : (resonancesTime.get(entry.getKey()) - now) / 1000) : 0) + .build(); + hongmengHeroInfos.add(hongmengHeroInfo); + } + List hongmengGuardsProto = new ArrayList<>(); + Map hongmengGuards = heroManager.getHongmengGuards(); + Map hongmengGuardTime = heroManager.getHongmengGuardTime(); + for (Map.Entry entry : hongmengGuards.entrySet()) { + HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.HongmengHeroInfo.newBuilder() + .setGridId(entry.getKey()) + .setHeroId(entry.getValue()) + .setTime(hongmengGuardTime.containsKey(entry.getKey()) ? (hongmengGuardTime.get(entry.getKey()) - now < 0 ? 0 : (hongmengGuardTime.get(entry.getKey()) - now) / 1000) : 0) + .build(); + hongmengGuardsProto.add(hongmengHeroInfo); + } + + List hongmengAdditions = new ArrayList<>(); + Map resonanceAddition = heroManager.getResonanceAddition(); + for (Map.Entry entry : resonanceAddition.entrySet()) { + HeroInfoProto.HongmengAddition hongmengAddition = HeroInfoProto.HongmengAddition + .newBuilder() + .setAdditionType(entry.getKey().getPropertyId()) + .setValue(entry.getValue().value) + .setHeroTid(entry.getValue().heroTid) + .build(); + hongmengAdditions.add(hongmengAddition); + } + HeroInfoProto.GetHongmengInfoResponse getHongmengInfoResponse = HeroInfoProto.GetHongmengInfoResponse.newBuilder() + .addAllHongmengGuards(hongmengGuardsProto) + .setHongmengTablet(heroManager.getHongmengTablet()) + .addAllHongmengHeroInfos(hongmengHeroInfos) + .addAllHongmengAdditions(hongmengAdditions) + .build(); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), getHongmengInfoResponse); + } + /** * 添加或更新鸿蒙守卫 * @param user @@ -3523,8 +3582,34 @@ public class HeroLogic{ } hero.setLevel(user, 1); } - } + long now = TimeUtils.now(); + List hongmengGuardsProto = new ArrayList<>(); + Map hongmengGuards = heroManager.getHongmengGuards(); + Map hongmengGuardTime = heroManager.getHongmengGuardTime(); + for (Map.Entry entry : hongmengGuards.entrySet()) { + HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.HongmengHeroInfo.newBuilder() + .setGridId(entry.getKey()) + .setHeroId(entry.getValue()) + .setTime(hongmengGuardTime.containsKey(entry.getKey()) ? (hongmengGuardTime.get(entry.getKey()) - now < 0 ? 0 : (hongmengGuardTime.get(entry.getKey()) - now) / 1000) : 0) + .build(); + hongmengGuardsProto.add(hongmengHeroInfo); + } + List hongmengAdditions = new ArrayList<>(); + for (Map.Entry entry : resonanceAddition.entrySet()) { + HeroInfoProto.HongmengAddition hongmengAddition = HeroInfoProto.HongmengAddition + .newBuilder() + .setAdditionType(entry.getKey().getPropertyId()) + .setValue(entry.getValue().value) + .setHeroTid(entry.getValue().heroTid) + .build(); + hongmengAdditions.add(hongmengAddition); + } + HeroInfoProto.HongmengInfoIndication hongmengInfoIndication = HeroInfoProto.HongmengInfoIndication.newBuilder() + .addAllHongmengGuards(hongmengGuardsProto) + .addAllHongmengAdditions(hongmengAdditions) + .build(); + MessageUtil.sendIndicationMessage(user.getId(), hongmengInfoIndication); } /**