diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index 78a6251e8..3c3a8c302 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -115,6 +115,8 @@ public class RedisKey { public static final String FAMILY_ID = "FAMILY_ID"; + public static final String FAMILY_JOIN = "FAMILY_JOIN"; + public static final String FAMILY_FIGHT = "FAMILY_FIGHT" ; public static final String FAMILY_ATTACK_BLOOD = "FAMILY_ATTACK_BLOOD"; public static final String FAMILY_FIGHT_RANK = "FAMILY_FIGHT_RANK"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessMapInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessMapInfo.java index fdd7f5769..725a97fe4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessMapInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessMapInfo.java @@ -20,7 +20,7 @@ public class EndlessMapInfo { private Set openMap; - private Map cellRefreshTime; + private Map cellRefreshTime = new HashMap<>(); private Set walkCell = new HashSet<>(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 7369582fa..93c1946d9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -934,7 +934,7 @@ public class MapLogic { } case 10:{ Map cellRefreshTime = user.getMapManager().getEndlessMapInfo().getCellRefreshTime(); - Integer time = cellRefreshTime.get(mapManager.getCurMapId()); + Integer time = cellRefreshTime.get(mapManager.getCurXY()); if(time!=null&&time>TimeUtils.now()/1000){ nextEventId=jumpTypeValues[0][0]; }else{ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 90c1fcc5c..4779ab5ae 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -775,7 +775,7 @@ public class ActivityLogic { continue; } if (i < BlessInfoConfig.REWARD_VIEW_START_ID) { - LOGGER.info("显示顺序是{}", entry.getKey()); +// LOGGER.info("显示顺序是{}", entry.getKey()); CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder() .setLocationId(i - BlessInfoConfig.START_CAPACITY) .setState(1) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java new file mode 100644 index 000000000..18d00f40e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java @@ -0,0 +1,71 @@ +package com.ljsd.jieling.logic.blood; + +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.logic.dao.*; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.family.GuildLogic; +import com.ljsd.jieling.logic.fight.CombatLogic; +import com.ljsd.jieling.logic.hero.HeroAttributeEnum; +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.logic.item.ItemLogic; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +public class BloodLogic { + + private static final Logger LOGGER = LoggerFactory.getLogger(BloodLogic.class); + + private BloodLogic(){} + + public static class Instance { + public final static BloodLogic instance = new BloodLogic(); + } + + public static BloodLogic getInstance() { + return BloodLogic.Instance.instance; + } + + //根据buff,team获得英雄快照 + public Map battleRecord(User user ,int teamId,int[] buffInfo){ + HeroManager heroManager = user.getHeroManager(); + TeamPosManager teamPosManager = user.getTeamPosManager(); + List teamPosHeroInfos = teamPosManager.getTeamPosForHero().get(teamId); + Iterator it = teamPosHeroInfos.iterator(); + Map heroAllAttribute = new HashMap<>(); + while (it.hasNext()) { + TeamPosHeroInfo heroInfo = it.next(); + Hero hero = heroManager.getHero(heroInfo.getHeroId()); + Map heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, 501); + //加buff + if(buffInfo.length>0){ + for(int i = 0 ; i < buffInfo.length ; i++){ + heroAttributeMap = CombatLogic.getInstance().bufferOneHeroAttrAfterEat(heroAttributeMap,buffInfo[i]); + } + } + heroAllAttribute.put(heroInfo.getHeroId(), new FamilyHeroInfo(hero.getTemplateId(), hero.getLevel(), heroAttributeMap)); + } + return heroAllAttribute; + } + //战斗之后血量计算 + public Map afterBattleRecord(Map heroAttribute,int[] fightResult){ + int index = 2; + for (Map.Entry entry : heroAttribute.entrySet()) { + FamilyHeroInfo value = entry.getValue(); + Map attribute = value.getAttribute(); + if(fightResult[0]==0) { + attribute.put(HeroAttributeEnum.CurHP.getPropertyId(), fightResult[index]); + }else{ + attribute.put(HeroAttributeEnum.CurHP.getPropertyId(), 0); + } + value.setAttribute(attribute); + index++; + } + return heroAttribute; + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java index fd1c4143e..3979bc83e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java @@ -10,6 +10,7 @@ import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.handler.family.FamilyRound; import com.ljsd.jieling.handler.map.behavior.BehaviorUtil; +import com.ljsd.jieling.logic.blood.BloodLogic; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; @@ -267,25 +268,10 @@ public class GuildFightLogic { for (Map.Entry entry : defendInfo.entrySet()) { User user = UserManager.getUser(entry.getKey()); int memberType = GuildLogic.getMemberType(entry.getKey(), guildInfo.getMembers()); - HeroManager heroManager = user.getHeroManager(); - TeamPosManager teamPosManager = user.getTeamPosManager(); - List teamPosHeroInfos = teamPosManager.getTeamPosForHero().get(501); - Iterator it = teamPosHeroInfos.iterator(); + int[] buffInfo = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_BUFF, gid.toString(), entry.getValue().toString(), int[].class); FamilyFightInfo fightInfo = new FamilyFightInfo(); - Map heroAllAttribute = new HashMap<>(); - while (it.hasNext()) { - TeamPosHeroInfo heroInfo = it.next(); - Hero hero = heroManager.getHero(heroInfo.getHeroId()); - Map heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, 501); - //加防守buff - int[] buffInfo = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_BUFF, gid.toString(), entry.getValue().toString(), int[].class); - if(buffInfo.length>0){ - for(int i = 0 ; i < buffInfo.length ; i++){ - heroAttributeMap = CombatLogic.getInstance().bufferOneHeroAttrAfterEat(heroAttributeMap,buffInfo[i]); - } - } - heroAllAttribute.put(heroInfo.getHeroId(), new FamilyHeroInfo(hero.getTemplateId(), hero.getLevel(), heroAttributeMap)); - } + //血量处理,buff处理 + Map heroAllAttribute = BloodLogic.getInstance().battleRecord(user, 501, buffInfo); fightInfo.setHeroAttribute(heroAllAttribute); fightInfo.setBuildId(entry.getValue()); fightInfo.setStarCount(guildSetting.getStarNum()[memberType-1]); @@ -432,25 +418,20 @@ public class GuildFightLogic { for (int i = 0; i < fightResult.length; i++) { System.out.println(fightResult[i]); } - int index = 2; int dieCount = 0; + // 战斗之后数据处理 - for (Map.Entry entry : heroAttribute.entrySet()) { - FamilyHeroInfo value = entry.getValue(); - Map attribute = value.getAttribute(); + for(int i = 2 ; i