From da2943dd9af4afd2c1bd67e852b672176ba71edc Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Thu, 13 Feb 2020 16:13:21 +0800 Subject: [PATCH] =?UTF-8?q?Task=20=E3=80=90ID1005460=E3=80=91=20=E3=80=90?= =?UTF-8?q?=E7=8E=A9=E6=B3=95=E9=9C=80=E6=B1=82=E3=80=91=E7=8C=8E=E5=A6=96?= =?UTF-8?q?=E4=B9=8B=E8=B7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StartExpeditionBattleRequest.java | 65 ++++++++++++++++--- .../com/ljsd/jieling/logic/dao/root/User.java | 5 ++ 2 files changed, 62 insertions(+), 8 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/StartExpeditionBattleRequest.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/StartExpeditionBattleRequest.java index 6620b9f89..afcb75ac6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/StartExpeditionBattleRequest.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/StartExpeditionBattleRequest.java @@ -5,26 +5,24 @@ import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.handler.BaseHandler; -import com.ljsd.jieling.logic.dao.ExpeditionNodeInfo; -import com.ljsd.jieling.logic.dao.SnapFightInfo; -import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; -import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.expedition.ExpeditionLogic; import com.ljsd.jieling.logic.fight.DefFightSnapData; import com.ljsd.jieling.logic.fight.FightUtil; +import com.ljsd.jieling.logic.hero.HeroAttributeEnum; +import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.Expedition; import com.ljsd.jieling.protocols.FightInfoProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.util.MessageUtil; +import config.SExpeditionHolyConfig; import config.SExpeditionSetting; import manager.STableManager; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; /** * Description: 开始节点战斗 @@ -91,7 +89,7 @@ public class StartExpeditionBattleRequest extends BaseHandler attackBloodMap) { + user.getTeamPosManager().setCurTeamPosId(teamId); + List heroFightInfos = new ArrayList<>(); + List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); + for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) { + Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId()); + if (hero == null) { + continue; + } + Map heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId); + if(null!=attackBloodMap&&attackBloodMap.containsKey(teamPosHeroInfo.getHeroId())){ + heroAttributeMap.put(HeroAttributeEnum.CurHP.getPropertyId(),(int)(attackBloodMap.getOrDefault(teamPosHeroInfo.getHeroId(),1d)*heroAttributeMap.get(HeroAttributeEnum.Hp.getPropertyId()))); + } + StringBuilder skillSb = new StringBuilder(); + StringBuilder propertySb = new StringBuilder(); + String heroSkill = HeroLogic.getInstance().getHeroSkills(user,hero,skillSb).toString(); + String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero, heroAttributeMap).toString(); + CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo + .newBuilder() + .setUnitId(Integer.toString(hero.getTemplateId())) + .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) + .setProperty(property.substring(0, property.length()-1)) + .build(); + heroFightInfos.add(heroFightInfo); + } + + //TOO 添加被动技能 + String pokenmonPassiveSkills = HeroLogic.getInstance().getPokenmonPassiveSkills(user, teamId); + + ExpeditionManager expeditionManager = user.getExpeditionManager(); + Set expeditionHolyConfigs = ExpeditionLogic.getFirstRankHoly(expeditionManager); + StringBuilder passiveSkillResult = new StringBuilder(); + if(pokenmonPassiveSkills.length()!=0){ + passiveSkillResult.append("|"); + } + for (SExpeditionHolyConfig config:expeditionHolyConfigs) { + passiveSkillResult.append(String.valueOf(config.getPassiveSkillId())).append("|"); + } + + String holySkill = passiveSkillResult.length()!=0?passiveSkillResult.substring(0,passiveSkillResult.length()-1):""; + return CommonProto.FightTeamInfo. + newBuilder() + .addAllFightUnitList(heroFightInfos) + .setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId)) + .setTeamPassiveList(pokenmonPassiveSkills+holySkill) + .build(); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java index e4a933a59..abcae608c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java @@ -47,6 +47,7 @@ public class User { private BloodyInfo bloodyInfo; private MainLevelManager mainLevelManager; private ExpeditionManager expeditionManager; + //TODO 新增manager 需要兼容旧的数据 提前判null //构造函数必须要声明,否则从mongodb读出来反编译成类不通过 public User(){ @@ -200,6 +201,10 @@ public class User { } public ExpeditionManager getExpeditionManager() { + if(null ==expeditionManager){ + this.expeditionManager = new ExpeditionManager(); + this.expeditionManager.init(id,MongoKey.expeditionManager); + } return expeditionManager; }