diff --git a/serverlogic/src/main/java/com/ljsd/CoreService.java b/serverlogic/src/main/java/com/ljsd/CoreService.java index 1eb6da4de..e16364d86 100644 --- a/serverlogic/src/main/java/com/ljsd/CoreService.java +++ b/serverlogic/src/main/java/com/ljsd/CoreService.java @@ -1,40 +1,30 @@ package com.ljsd; - import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; import com.ljsd.jieling.db.redis.RedisUtil; -import com.ljsd.jieling.handler.GetPlayerInfoHandler; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.OnlineUserManager; -import com.ljsd.jieling.logic.dao.*; +import com.ljsd.jieling.logic.dao.GuilidManager; +import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.family.GuildCrossHandler.BaseCrossHandler; -import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; import com.ljsd.jieling.network.session.ISession; -import com.ljsd.jieling.thrift.idl.Pokemon; -import com.ljsd.jieling.thrift.idl.PropertyItem; -import com.ljsd.jieling.thrift.idl.PurpleMansionSeal; -import com.ljsd.jieling.thrift.idl.TeamPosHeroInfo; -import com.ljsd.jieling.thrift.idl.*; -import com.ljsd.jieling.util.CBean2Proto; +import com.ljsd.jieling.thrift.idl.CrossArenaManager; +import com.ljsd.jieling.thrift.idl.RPCRequestIFace; +import com.ljsd.jieling.thrift.idl.RechargeResult; +import com.ljsd.jieling.thrift.idl.Result; import com.ljsd.jieling.util.MessageUtil; -import config.SChangingCard; -import manager.STableManager; import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import rpc.protocols.ArenaInfoProto; -import rpc.protocols.CommonProto; import rpc.protocols.MessageTypeProto; import rpc.protocols.RoomProto; -import util.TimeUtils; - -import java.util.*; -import java.util.stream.Collectors; - +import java.util.HashMap; +import java.util.Set; public class CoreService implements RPCRequestIFace.Iface { private static final Logger LOGGER = LoggerFactory.getLogger(CoreService.class); @@ -88,111 +78,111 @@ public class CoreService implements RPCRequestIFace.Iface { @Override public CrossArenaManager getHeroManagerInfo(int uid) { - long start = TimeUtils.now(); - try{ - // 编队列表 - User user = UserManager.getUserNotCache(uid); - if (user == null){ - return null; - } - // 编队数据处理 - Map> teams = new HashMap<>(); - TeamPosManager teamPosManager = user.getTeamPosManager(); - Map> listMap = teamPosManager.getTeamPosForHero(); - for (Map.Entry> entry : listMap.entrySet()) { - // 跨服编队 - if (TeamEnum.isCrossTeam(entry.getKey())){ - List list = new ArrayList<>(); - entry.getValue().forEach(n->list.add(new TeamPosHeroInfo().setHeroId(n.getHeroId()).setPosition(n.getPosition()))); - teams.put(entry.getKey(),list); - } - } - // 英雄数据处理 - Map heroes = new HashMap<>(); - Map heroMap = user.getHeroManager().getHeroMap(); - for (List value : teams.values()) { - for (TeamPosHeroInfo info : value) { - Hero hero = heroMap.get(info.getHeroId()); - heroes.put(info.getHeroId(),buildArenaOfHero(user,hero,teams)); - } - } - // 魂宝灵宝 - Map jewels = new HashMap<>(); - Map equipMap = user.getEquipManager().getEquipMap(); - for (Hero hero : heroMap.values()) { - for (String info : hero.getJewelInfo()) { - jewels.put(info,buildrprcPropertyItem(equipMap.get(info),user,hero)); - } - } - // 编队战力 - HashMap map = new HashMap<>(); - teams.forEach((k,v)->{ - long totalForce = teamPosManager.getTeamForce(k); - map.put(k,totalForce); - }); - long force1 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId()); - long force2 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId()); - long force3 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId()); - CrossArenaManager rpcArenaManager = new CrossArenaManager(); - rpcArenaManager.setTeams(teams); - rpcArenaManager.setHeros(heroes); - rpcArenaManager.setJewels(jewels); - rpcArenaManager.setTotalForceByTeam(map); - rpcArenaManager.setTotalForce(force1+force2+force3); - - // 紫府神印 - Map rpdSealMap = new HashMap<>(); - Map sealMap= user.getHeroManager().getPurpleMansionSeal(); - sealMap.forEach((m,n)->{ - PurpleMansionSeal reseal = new PurpleMansionSeal().setSealId(n.getSealId()).setType(n.getType()).setSubId(n.getSubId()).setState(n.getState()); - rpdSealMap.put(m,reseal); - }); - rpcArenaManager.setSeals(rpdSealMap); - - // 灵兽 - Map pokemonMap = user.getPokemonManager().getPokemonMap(); - Map pokemonMapRpc = new HashMap<>(); - pokemonMap.forEach((n,m)->{ - Pokemon rpcPokemon = new Pokemon().setTmpId(m.getTmpId()).setId(m.getId()).setLevel(m.getLevel()).setStar(m.getStar()); - pokemonMapRpc.put(n,rpcPokemon); - }); - rpcArenaManager.setPokemons(pokemonMapRpc); - - Map teamMap = user.getPokemonManager().getPokemonTeamMap(); - rpcArenaManager.setPokemonTeamMap(teamMap); - rpcArenaManager.setGuildSkill(new HashMap<>(user.getGuildMyInfo().getGuildSkill())); - //坐骑技能 - rpcArenaManager.setSkill(Arrays.asList(user.getPlayerInfoManager().getUserMountValidTime().keySet().toArray(new Integer[0]))); - rpcArenaManager.setFourSpirit(user.getPlayerInfoManager().getFourChallengeTotal()); - ///修行技能数据 - rpcArenaManager.setPracticeSkillMap(user.getHeroManager().getPracticeSkillMap()); - rpcArenaManager.setFaBaoGongMingSkillMap(user.getHeroManager().getFaBaoGongMingSkillMap()); - rpcArenaManager.setMaxHistoryForce(user.getPlayerInfoManager().getMaxForce()); - // 身外化身数据 - List list = new ArrayList<>(); - user.getHeroManager().getTransformationList().values().stream().filter(v -> v.getStatus() == 1).forEach(n->{ - Map cardMap = STableManager.getConfig(SChangingCard.class); - SChangingCard changingCard = cardMap.get(n.getCardId()); - if(changingCard!= null){ - if(changingCard.getSkill().length >= n.getStar()+1){ - list.add(changingCard.getSkill()[n.getStar()]); - } - } - }); - rpcArenaManager.setTfInfoList(list); - //四象心法数据 - rpcArenaManager.setSixiangInfos(sixiangData2RpcData(user)); - //命格 - rpcArenaManager.setLifeGridInfos(getUserMinggeList(user)); - //玩家坐骑信息 - rpcArenaManager.setUserMountValidTime(getUserMountList(user)); - //身外化身 - rpcArenaManager.setTransformationList(getTransformationInfoList(user)); - LOGGER.info("跨服,获取玩家英雄信息耗时:{}ms",TimeUtils.now()-start); - return rpcArenaManager; - }catch (Exception e){ - LOGGER.error("跨服,获取玩家英雄信息报错,uid:{},error:{}",uid,e.getMessage()); - } +// long start = TimeUtils.now(); +// try{ +// // 编队列表 +// User user = UserManager.getUserNotCache(uid); +// if (user == null){ +// return null; +// } +// // 编队数据处理 +// Map> teams = new HashMap<>(); +// TeamPosManager teamPosManager = user.getTeamPosManager(); +// Map> listMap = teamPosManager.getTeamPosForHero(); +// for (Map.Entry> entry : listMap.entrySet()) { +// // 跨服编队 +// if (TeamEnum.isCrossTeam(entry.getKey())){ +// List list = new ArrayList<>(); +// entry.getValue().forEach(n->list.add(new TeamPosHeroInfo().setHeroId(n.getHeroId()).setPosition(n.getPosition()))); +// teams.put(entry.getKey(),list); +// } +// } +// // 英雄数据处理 +// Map heroes = new HashMap<>(); +// Map heroMap = user.getHeroManager().getHeroMap(); +// for (List value : teams.values()) { +// for (TeamPosHeroInfo info : value) { +// Hero hero = heroMap.get(info.getHeroId()); +// heroes.put(info.getHeroId(),buildArenaOfHero(user,hero,teams)); +// } +// } +// // 魂宝灵宝 +// Map jewels = new HashMap<>(); +// Map equipMap = user.getEquipManager().getEquipMap(); +// for (Hero hero : heroMap.values()) { +// for (String info : hero.getJewelInfo()) { +// jewels.put(info,buildrprcPropertyItem(equipMap.get(info),user,hero)); +// } +// } +// // 编队战力 +// HashMap map = new HashMap<>(); +// teams.forEach((k,v)->{ +// long totalForce = teamPosManager.getTeamForce(k); +// map.put(k,totalForce); +// }); +// long force1 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId()); +// long force2 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId()); +// long force3 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId()); +// CrossArenaManager rpcArenaManager = new CrossArenaManager(); +// rpcArenaManager.setTeams(teams); +// rpcArenaManager.setHeros(heroes); +// rpcArenaManager.setJewels(jewels); +// rpcArenaManager.setTotalForceByTeam(map); +// rpcArenaManager.setTotalForce(force1+force2+force3); +// +// // 紫府神印 +// Map rpdSealMap = new HashMap<>(); +// Map sealMap= user.getHeroManager().getPurpleMansionSeal(); +// sealMap.forEach((m,n)->{ +// PurpleMansionSeal reseal = new PurpleMansionSeal().setSealId(n.getSealId()).setType(n.getType()).setSubId(n.getSubId()).setState(n.getState()); +// rpdSealMap.put(m,reseal); +// }); +// rpcArenaManager.setSeals(rpdSealMap); +// +// // 灵兽 +// Map pokemonMap = user.getPokemonManager().getPokemonMap(); +// Map pokemonMapRpc = new HashMap<>(); +// pokemonMap.forEach((n,m)->{ +// Pokemon rpcPokemon = new Pokemon().setTmpId(m.getTmpId()).setId(m.getId()).setLevel(m.getLevel()).setStar(m.getStar()); +// pokemonMapRpc.put(n,rpcPokemon); +// }); +// rpcArenaManager.setPokemons(pokemonMapRpc); +// +// Map teamMap = user.getPokemonManager().getPokemonTeamMap(); +// rpcArenaManager.setPokemonTeamMap(teamMap); +// rpcArenaManager.setGuildSkill(new HashMap<>(user.getGuildMyInfo().getGuildSkill())); +// //坐骑技能 +// rpcArenaManager.setSkill(Arrays.asList(user.getPlayerInfoManager().getUserMountValidTime().keySet().toArray(new Integer[0]))); +// rpcArenaManager.setFourSpirit(user.getPlayerInfoManager().getFourChallengeTotal()); +// ///修行技能数据 +// rpcArenaManager.setPracticeSkillMap(user.getHeroManager().getPracticeSkillMap()); +// rpcArenaManager.setFaBaoGongMingSkillMap(user.getHeroManager().getFaBaoGongMingSkillMap()); +// rpcArenaManager.setMaxHistoryForce(user.getPlayerInfoManager().getMaxForce()); +// // 身外化身数据 +// List list = new ArrayList<>(); +// user.getHeroManager().getTransformationList().values().stream().filter(v -> v.getStatus() == 1).forEach(n->{ +// Map cardMap = STableManager.getConfig(SChangingCard.class); +// SChangingCard changingCard = cardMap.get(n.getCardId()); +// if(changingCard!= null){ +// if(changingCard.getSkill().length >= n.getStar()+1){ +// list.add(changingCard.getSkill()[n.getStar()]); +// } +// } +// }); +// rpcArenaManager.setTfInfoList(list); +// //四象心法数据 +// rpcArenaManager.setSixiangInfos(sixiangData2RpcData(user)); +// //命格 +// rpcArenaManager.setLifeGridInfos(getUserMinggeList(user)); +// //玩家坐骑信息 +// rpcArenaManager.setUserMountValidTime(getUserMountList(user)); +// //身外化身 +// rpcArenaManager.setTransformationList(getTransformationInfoList(user)); +// LOGGER.info("跨服,获取玩家英雄信息耗时:{}ms",TimeUtils.now()-start); +// return rpcArenaManager; +// }catch (Exception e){ +// LOGGER.error("跨服,获取玩家英雄信息报错,uid:{},error:{}",uid,e.getMessage()); +// } return null; } @@ -200,70 +190,70 @@ public class CoreService implements RPCRequestIFace.Iface { /** * 获取变身卡列表信息过滤 */ - public static List getTransformationInfoList(User user){ - List list = new ArrayList<>(); - for (TransformationInfo value : user.getHeroManager().getTransformationList().values().stream().filter(v -> v.getStatus() == 1).collect(Collectors.toList())) { - TransformationCardInfo builder = new TransformationCardInfo(); - builder.setId(value.getCardId()); - builder.setIndex(value.getIndex()); - builder.setStatus(value.getStatus()); - builder.setLevel(value.getLevel()); - builder.setStar(value.getStar()); - list.add(builder); - } - return list; - } +// public static List getTransformationInfoList(User user){ +// List list = new ArrayList<>(); +// for (TransformationInfo value : user.getHeroManager().getTransformationList().values().stream().filter(v -> v.getStatus() == 1).collect(Collectors.toList())) { +// TransformationCardInfo builder = new TransformationCardInfo(); +// builder.setId(value.getCardId()); +// builder.setIndex(value.getIndex()); +// builder.setStatus(value.getStatus()); +// builder.setLevel(value.getLevel()); +// builder.setStar(value.getStar()); +// list.add(builder); +// } +// return list; +// } /** * 获取玩家命格信息 */ - public static List getUserMinggeList(User user) { - List data = GetPlayerInfoHandler.getLifeGridInfos(user.getHeroManager()); - ListrpcData = new ArrayList<>(); - for(CommonProto.LifeGridInfo perData:data){ - LifeGridInfo perRpcData = new LifeGridInfo(); - perRpcData.setGridId(perData.getGridId()); - perRpcData.setGridIndex(perData.getGridIndex()); - perRpcData.setItemId(perData.getItemId()); - rpcData.add(perRpcData); - } - return rpcData; - } +// public static List getUserMinggeList(User user) { +// List data = GetPlayerInfoHandler.getLifeGridInfos(user.getHeroManager()); +// ListrpcData = new ArrayList<>(); +// for(CommonProto.LifeGridInfo perData:data){ +// LifeGridInfo perRpcData = new LifeGridInfo(); +// perRpcData.setGridId(perData.getGridId()); +// perRpcData.setGridIndex(perData.getGridIndex()); +// perRpcData.setItemId(perData.getItemId()); +// rpcData.add(perRpcData); +// } +// return rpcData; +// } /** * 获取玩家坐骑信息 */ - public static List getUserMountList(User user) { - List data = CBean2Proto.getUserMountList(user); - ListrpcData = new ArrayList<>(); - for(CommonProto.UserMountInfo perData :data){ - UserMountInfo rpc = new UserMountInfo(); - rpc.setMountId(perData.getMountId()); - rpc.setOverTime(perData.getOverTime()); - rpcData.add(rpc); - } - return rpcData; - } +// public static List getUserMountList(User user) { +// List data = CBean2Proto.getUserMountList(user); +// ListrpcData = new ArrayList<>(); +// for(CommonProto.UserMountInfo perData :data){ +// UserMountInfo rpc = new UserMountInfo(); +// rpc.setMountId(perData.getMountId()); +// rpc.setOverTime(perData.getOverTime()); +// rpcData.add(rpc); +// } +// return rpcData; +// } //四象心法数据转换 - public static List sixiangData2RpcData(User user){ - List sixiangxinfaInfo = GetPlayerInfoHandler.getSixiangxinfaInfos(user.getHeroManager()); - List rpcInfo = new ArrayList<>(); - for(CommonProto.SixiangxinfaInfo data:sixiangxinfaInfo){ - SixiangxinfaInfo perRpcInfo = new SixiangxinfaInfo(); - perRpcInfo.setProfessionId(data.getProfessionId()); - perRpcInfo.setLevel(data.getLevel()); - for(CommonProto.SixiangxinfaPropertyInfo property:data.getPropertyInfoListList()){ - SixiangxinfaPropertyInfo rpcSixiangxinfaPropertyInfo = new SixiangxinfaPropertyInfo(); - rpcSixiangxinfaPropertyInfo.setPropertyId(property.getPropertyId()); - rpcSixiangxinfaPropertyInfo.setPropertyNum(property.getPropertyNum()); - perRpcInfo.addToPropertyInfoList(rpcSixiangxinfaPropertyInfo); - } - rpcInfo.add(perRpcInfo); - } - return rpcInfo; - } +// public static List sixiangData2RpcData(User user){ +// List sixiangxinfaInfo = GetPlayerInfoHandler.getSixiangxinfaInfos(user.getHeroManager()); +// List rpcInfo = new ArrayList<>(); +// for(CommonProto.SixiangxinfaInfo data:sixiangxinfaInfo){ +// SixiangxinfaInfo perRpcInfo = new SixiangxinfaInfo(); +// perRpcInfo.setProfessionId(data.getProfessionId()); +// perRpcInfo.setLevel(data.getLevel()); +// for(CommonProto.SixiangxinfaPropertyInfo property:data.getPropertyInfoListList()){ +// SixiangxinfaPropertyInfo rpcSixiangxinfaPropertyInfo = new SixiangxinfaPropertyInfo(); +// rpcSixiangxinfaPropertyInfo.setPropertyId(property.getPropertyId()); +// rpcSixiangxinfaPropertyInfo.setPropertyNum(property.getPropertyNum()); +// perRpcInfo.addToPropertyInfoList(rpcSixiangxinfaPropertyInfo); +// } +// rpcInfo.add(perRpcInfo); +// } +// return rpcInfo; +// } @Override public boolean sendCrossLingmaiHongdian(int uid){ ISession sess = OnlineUserManager.sessionMap.get(uid); @@ -274,68 +264,67 @@ public class CoreService implements RPCRequestIFace.Iface { return false; } - private PropertyItem buildrprcPropertyItem(com.ljsd.jieling.logic.dao.PropertyItem propertyItem,User user,Hero hero){ - PropertyItem rpcPropertyItem = new PropertyItem(); - rpcPropertyItem.setId(propertyItem.getId()); - rpcPropertyItem.setEquipId(propertyItem.getEquipId()); - rpcPropertyItem.setHeroId(propertyItem.getHeroId()); - rpcPropertyItem.setRebuildLevel(propertyItem.getBuildLevel()); - rpcPropertyItem.setLevel(propertyItem.getLevel()); - return rpcPropertyItem; - } +// private PropertyItem buildrprcPropertyItem(com.ljsd.jieling.logic.dao.PropertyItem propertyItem,User user,Hero hero){ +// PropertyItem rpcPropertyItem = new PropertyItem(); +// rpcPropertyItem.setId(propertyItem.getId()); +// rpcPropertyItem.setEquipId(propertyItem.getEquipId()); +// rpcPropertyItem.setHeroId(propertyItem.getHeroId()); +// rpcPropertyItem.setRebuildLevel(propertyItem.getBuildLevel()); +// rpcPropertyItem.setLevel(propertyItem.getLevel()); +// return rpcPropertyItem; +// } - private ArenaOfHero buildArenaOfHero(User user,Hero hero, Map> teamMap){ - HeroManager heroManager = user.getHeroManager(); - ArenaOfHero arenaOfHero = new ArenaOfHero(); - arenaOfHero.setId(hero.getId()); - arenaOfHero.setTemplateId(hero.getTemplateId()); - arenaOfHero.setLevel(hero.getLevel(heroManager)); - arenaOfHero.setStar(hero.getStar()); - arenaOfHero.setEquipByPositionMap(new HashMap<>(hero.getEquipByPositionMap())); - arenaOfHero.setSoulEquipByPositionMap(new HashMap<>(hero.getSoulEquipByPositionMap())); - arenaOfHero.setGodSealByPositionMap(new HashMap<>(hero.getGodSealByPositionMap())); - arenaOfHero.setBreakId(hero.getBreakIdByHongMeng(heroManager)); - arenaOfHero.setStarBreakId(hero.getStarBreakId()); - arenaOfHero.setCreateTime(hero.getCreateTime()); - // todo 法宝重写 - arenaOfHero.setEspecialEquipLevel(0); - arenaOfHero.setJewelInfo(new HashSet<>(hero.getJewelInfo())); - arenaOfHero.setCreateTime(hero.getCreateType()); - arenaOfHero.setChangeId(hero.getChangeId()); - arenaOfHero.setSkin(hero.getSkin()); - arenaOfHero.setGodSoulLv(hero.getGodSoulLv()); - arenaOfHero.setEquipAdvanceLv(hero.getEquipAdvanceLv()); - // 摘星阁装备强化 - for (HeroEquipStrong strong : hero.getEquipStrongMap().values()) { - equipStrongInfo strongInfo = new equipStrongInfo(); - strongInfo.setPosition(strong.getPosition()); - strongInfo.setStrongLv(strong.getStrongLv()); - arenaOfHero.putToEquipStrongMap(strongInfo.getPosition(),strongInfo); - } - arenaOfHero.setPropertyId(hero.getPropertyId()); - for (Map.Entry> entry : teamMap.entrySet()) { - Integer teamId = entry.getKey(); - List teamList = entry.getValue(); - List collect = teamList.stream().filter(v -> v.getHeroId().equals(hero.getId())).collect(Collectors.toList()); - if (collect.isEmpty()){ - continue; - } - Map attributeShow; - attributeShow = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, true, teamId); - if(arenaOfHero.getAttributeMapByTeam() == null){ - arenaOfHero.setAttributeMapByTeam(new HashMap<>()); - } - arenaOfHero.getAttributeMapByTeam().put(teamId,attributeShow); - - Map attributeBattle; - attributeBattle = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId); - if(arenaOfHero.getAttributeMapByTeamBattle() == null){ - arenaOfHero.setAttributeMapByTeamBattle(new HashMap<>()); - } - arenaOfHero.getAttributeMapByTeamBattle().put(teamId,attributeBattle); - } - return arenaOfHero; - } +// private ArenaOfHero buildArenaOfHero(User user,Hero hero, Map> teamMap){ +// HeroManager heroManager = user.getHeroManager(); +// ArenaOfHero arenaOfHero = new ArenaOfHero(); +// arenaOfHero.setId(hero.getId()); +// arenaOfHero.setTemplateId(hero.getTemplateId()); +// arenaOfHero.setLevel(hero.getLevel(heroManager)); +// arenaOfHero.setStar(hero.getStar()); +// arenaOfHero.setEquipByPositionMap(new HashMap<>(hero.getEquipByPositionMap())); +// arenaOfHero.setSoulEquipByPositionMap(new HashMap<>(hero.getSoulEquipByPositionMap())); +// arenaOfHero.setGodSealByPositionMap(new HashMap<>(hero.getGodSealByPositionMap())); +// arenaOfHero.setBreakId(hero.getBreakIdByHongMeng(heroManager)); +// arenaOfHero.setStarBreakId(hero.getStarBreakId()); +// arenaOfHero.setCreateTime(hero.getCreateTime()); +// arenaOfHero.setEspecialEquipLevel(0); +// arenaOfHero.setJewelInfo(new HashSet<>(hero.getJewelInfo())); +// arenaOfHero.setCreateTime(hero.getCreateType()); +// arenaOfHero.setChangeId(hero.getChangeId()); +// arenaOfHero.setSkin(hero.getSkin()); +// arenaOfHero.setGodSoulLv(hero.getGodSoulLv()); +// arenaOfHero.setEquipAdvanceLv(hero.getEquipAdvanceLv()); +// // 摘星阁装备强化 +// for (HeroEquipStrong strong : hero.getEquipStrongMap().values()) { +// equipStrongInfo strongInfo = new equipStrongInfo(); +// strongInfo.setPosition(strong.getPosition()); +// strongInfo.setStrongLv(strong.getStrongLv()); +// arenaOfHero.putToEquipStrongMap(strongInfo.getPosition(),strongInfo); +// } +// arenaOfHero.setPropertyId(hero.getPropertyId()); +// for (Map.Entry> entry : teamMap.entrySet()) { +// Integer teamId = entry.getKey(); +// List teamList = entry.getValue(); +// List collect = teamList.stream().filter(v -> v.getHeroId().equals(hero.getId())).collect(Collectors.toList()); +// if (collect.isEmpty()){ +// continue; +// } +// Map attributeShow; +// attributeShow = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, true, teamId); +// if(arenaOfHero.getAttributeMapByTeam() == null){ +// arenaOfHero.setAttributeMapByTeam(new HashMap<>()); +// } +// arenaOfHero.getAttributeMapByTeam().put(teamId,attributeShow); +// +// Map attributeBattle; +// attributeBattle = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId); +// if(arenaOfHero.getAttributeMapByTeamBattle() == null){ +// arenaOfHero.setAttributeMapByTeamBattle(new HashMap<>()); +// } +// arenaOfHero.getAttributeMapByTeamBattle().put(teamId,attributeBattle); +// } +// return arenaOfHero; +// } @Override public boolean isContaintSensitiveWord(String txt, int matchType) throws TException { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/UpHeroStarHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/UpHeroStarHandler.java index 93b1000ac..187a7ee16 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/UpHeroStarHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/UpHeroStarHandler.java @@ -4,11 +4,10 @@ import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.hero.HongMengFunctionEnum; -import com.ljsd.jieling.logic.item.ItemLogic; import com.ljsd.jieling.network.session.ISession; +import org.springframework.stereotype.Component; import rpc.protocols.HeroInfoProto; import rpc.protocols.MessageTypeProto; -import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @@ -51,13 +50,6 @@ public class UpHeroStarHandler extends BaseHandler jewels; - /** - * 神树 - * todo 20220902 建木神树跟随魂灵宝走,不再单独展示,为了兼容redis缓存,这里不做删除,但是也不用了 - */ - private int treeLevel; /** * 四灵种族塔总数 */ @@ -58,6 +54,8 @@ public class HelpHero { private List faxiangs = new ArrayList<>(); + private Baubles baubles; + public int getUid() { return uid; } @@ -129,4 +127,12 @@ public class HelpHero { public void setFaxiangs(List faxiangs) { this.faxiangs = faxiangs; } + + public Baubles getBaubles() { + return baubles; + } + + public void setBaubles(Baubles baubles) { + this.baubles = baubles; + } } 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 4cfced258..bc738908c 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 @@ -4229,8 +4229,6 @@ public class HeroLogic { * @throws Exception */ public void especialEquipBack(ISession session, List heroIdList) throws Exception { - User user = UserManager.getUser(session.getUid()); - // todo 法宝归元重写 MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.ESPECIAL_EQUIP_BACK_RESPONSE_VALUE, null, true); } @@ -4365,16 +4363,6 @@ public class HeroLogic { for (int[] ints : levelReturn) { returnItemMap.put(ints[0], returnItemMap.getOrDefault(ints[0], 0) + ints[1]); } - if (!isAddEspecial) { - continue; - } - //返还法宝修炼材料 - Map especialEquipReturnItem = ItemLogic.getInstance().heroEspecialEquipReturnItem(hero); - if (especialEquipReturnItem != null && !especialEquipReturnItem.isEmpty()) { - for (Map.Entry entry : especialEquipReturnItem.entrySet()) { - returnItemMap.put(entry.getKey(), returnItemMap.getOrDefault(entry.getKey(), 0) + entry.getValue()); - } - } } int[][] resultDrop = new int[returnItemMap.size()][]; int index = 0; @@ -6380,7 +6368,7 @@ public class HeroLogic { List skillList = new ArrayList<>(); SCHero tempHero = SCHero.getsCHero().get(hero.getTemplateId()); //英雄技能取统一的玉虚配置英雄 - List skillListByStar = tempHero.getSkillListByStar(yuxuHero.getStar()); + List skillListByStar = tempHero.getSkillListByStar(yuxuHero.getStar()); if (skillListByStar != null) { skillList.addAll(skillListByStar); } @@ -6411,7 +6399,7 @@ public class HeroLogic { Map godSealByPositionMap = yuxuHero.getGodSealByPositionMap(); godSealByPositionMap.values().forEach(e -> Arrays.stream(config.get(e).getPassiveSkill()).forEach(skillList::add)); - //法宝技能继承真实技能 todo 玉虚法宝处理 + //法宝技能继承真实技能 todo 玉虚法宝重写 int[] equipTalismana = tempHero.getEquipTalismana(); return skillList; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index 5339638eb..8db177cd2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -570,12 +570,6 @@ public class ItemLogic { baseItemMap.put(item[0], baseItemMap.getOrDefault(item[0], 0L) + item[1]); } - //法宝获得 - Map especialReturn = heroEspecialEquipReturnItem(hero); - if (especialReturn != null) { - especialReturn.forEach((k, v) -> baseItemMap.put(k, baseItemMap.getOrDefault(k, 0L) + v)); - } - // 潜能 HeroLogic.getInstance().potentialBackDrop(hero, baseItemMap); } @@ -600,28 +594,6 @@ public class ItemLogic { ItemLogic.sendUseAndPriceItemMessage(iSession, MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE, drop); } - /** - * 法宝归元所得 - * todo 法宝重写 - */ - public Map heroEspecialEquipReturnItem(Hero hero) { - SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); - int[] equipTalismana = scHero.getEquipTalismana(); - if (equipTalismana == null || equipTalismana.length < 2) { - return null; - } - Map baseItemMap = new HashMap<>(); - TreeMap levelMap = (TreeMap) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1])); - Map returnMap = levelMap.subMap(1, 0); - for (Map.Entry entry : returnMap.entrySet()) { - int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial(); - for (int[] rankUpConsume : rankupBasicMaterial) { - baseItemMap.put(rankUpConsume[0], baseItemMap.getOrDefault(rankUpConsume[0], 0) + rankUpConsume[1]); - } - } - return baseItemMap; - } - /** * 返回数量乘比值 * @@ -701,7 +673,7 @@ public class ItemLogic { } PlayerInfoProto.RefreshItemNumResponse.Builder builder = PlayerInfoProto.RefreshItemNumResponse.newBuilder(); List itemInfos = new ArrayList<>(); - if (itemList.size() != 0) { + if (!itemList.isEmpty()) { for (Item item : itemList) { itemInfos.add(CBean2Proto.getItemInfo(item)); } @@ -710,59 +682,6 @@ public class ItemLogic { MessageUtil.sendMessage(iSession, 1, msgId, builder.build(), true); } - /** - * 法宝进阶 todo 法宝重写 - */ - public void especialEquipUpStar(ISession session, String heroId) throws Exception { - User user = UserManager.getUser(session.getUid()); - Hero hero = user.getHeroManager().getHero(heroId); - if (hero == null) { - throw new ErrorCodeException(ErrorCode.newDefineCode("当前法宝不存在")); - } - SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); - if (scHero.getEquipTalismana() == null && hero.getStar() < scHero.getEquipTalismana()[0]) { - throw new ErrorCodeException(ErrorCode.newDefineCode("当前英雄无法升级法宝")); - } - - int especialEquipId = scHero.getEquipTalismana()[1]; - int maxLimit = SSpecialConfig.getIntegerValue(SSpecialConfig.EquipTalismanaUpperLimit); -// if (hero.getEspecialEquipLevel() >= maxLimit){ -// throw new ErrorCodeException(ErrorCode.newDefineCode("法宝已最大限制等级")); -// } -// SEquipTalismana sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquipId).get(hero.getEspecialEquipLevel()); -// if (sEquipTalismana == null || sEquipTalismana.getRankupBasicMaterial() == null|| sEquipTalismana.getRankupBasicMaterial().length==0) { -// throw new ErrorCodeException(ErrorCode.newDefineCode("法宝已最大等级")); -// } -// boolean check = ItemUtil.itemCost(user, sEquipTalismana.getRankupBasicMaterial(), BIReason.ESPECIAL_EQUIP_UP_LEVEL_CONSUME, 1); -// if (!check){ -// throw new ErrorCodeException(ErrorCode.ITEM_ESPECIAL_EQUIP_UP_ITEM_NOT); -// } -// hero.updateEspecial(hero.getEspecialEquipLevel() + 1); -// Poster.getPoster().dispatchEvent(new EspecialEquipUpEvent(user.getId(), especialEquipId, hero.getEspecialEquipLevel())); -// user.getUserMissionManager().onGameEvent(user, GameEvent.ESPECIAL_EQUIP, hero.getEspecialEquipLevel(), heroId); -// MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE, null, true); -// int[] value = SSpecialConfig.getOnceArrayValue(SSpecialConfig.lamp_rankup_equiptalisman_content_parm); -// if (hero.getEspecialEquipLevel() >= value[0]) { -// SItem sItem = SItem.getsItemMap().get(especialEquipId); -// if (sItem.getQuantity() < 5) { -// return; -// } -// // 每5级发送一次公告 -// if (hero.getEspecialEquipLevel() % value[1] != 0) { -// return; -// } -// String nameColor = user.getPlayerInfoManager().getNameColor(); -// String message = SErrorCodeEerverConfig.getI18NMessageNeedConvert("lamp_rankup_equiptalisman_content", -// new Object[]{nameColor, user.getPlayerInfoManager().getNickName(), sItem.getName(), hero.getEspecialEquipLevel()}, -// new int[]{0,0,1,0}); -// ChatLogic.getInstance().sendSysChatMessage(message, Global.DILIGENT, String.valueOf(sItem.getId()), 0, 0, 0, 0, 0); -// } - // 更新战力 - Poster.getPoster().dispatchEvent(new SaveHeroForceEvent(user.getId(),heroId)); - //鸿蒙阵 - HeroLogic.getInstance().addOrUpdateHongmeng(session); - } - public void addItemLog(ItemLog itemLog) { ItemLogUtil.addLogQueue(itemLog); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/UpJewlDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/UpJewlDataManager.java index 2923092cb..9ca5f5327 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/UpJewlDataManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/UpJewlDataManager.java @@ -1,8 +1,6 @@ package com.ljsd.jieling.logic.mission.data; -import com.ljsd.jieling.logic.dao.CumulationData; -import com.ljsd.jieling.logic.dao.Hero; -import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; +import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.MissionType; @@ -28,27 +26,24 @@ public class UpJewlDataManager extends AbstractDataManager{ @Override public boolean isFinish(User user,CumulationData data, int[][] cfgValue, Object... parm) { -// if(parm.length==1&&(int)parm[0]!=6){ -// return false; -// } -// if(parm.length==2&&(int)parm[0]!=cfgValue[1][0]){ -// return false; -// } - if( data.jewl_all_leve==cfgValue[1][0]){ + if(data.jewl_all_leve==cfgValue[1][0]){ return true; } - for (Map.Entry> entry:user.getTeamPosManager().getTeamPosForHero().entrySet()){ + Map> teamPosForHero = user.getTeamPosManager().getTeamPosForHero(); + HeroManager heroManager = user.getHeroManager(); + EquipManager equipManager = user.getEquipManager(); + for (Map.Entry> entry:teamPosForHero.entrySet()){ List teamPosHeroInfos =entry.getValue(); if(teamPosHeroInfos.size()!=6){ continue; } boolean isAll =true; for (TeamPosHeroInfo info:teamPosHeroInfos){ - Hero hero = user.getHeroManager().getHero(info.getHeroId()); - // todo 法宝重写 -// if(hero.getEspecialEquipLevel() < cfgValue[1][0]){ -// isAll = false; -// } + Hero hero = heroManager.getHero(info.getHeroId()); + Baubles baubles = equipManager.getBaubles(hero.getBauBlesId()); + if (baubles != null && baubles.getLevel() < cfgValue[1][0]){ + isAll = false; + } } if(isAll){ data.jewl_all_leve=cfgValue[1][0]; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 6a62c3aa6..90f9891c6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -1387,7 +1387,7 @@ public class PlayerLogic { builder.addSpecialEffects(CommonProto.SpecialEffects.newBuilder().setPropertyId(item.getKey()).setPropertyValue(item.getValue().intValue()).build()); } builder.setForce(HeroLogic.getInstance().calForce(heroAttributeMap)); - builder.setHero(CBean2Proto.getYuxuHero(yuxuHero,hero)); + builder.setHero(CBean2Proto.getYuxuHero(yuxuHero)); //公会等级统一为0 builder.setGuildSkill(0); return builder.build(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 270b7a045..e392211b8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -283,7 +283,6 @@ public class CBean2Proto { /** * 助战,hero对象转redis类型 * 存入redis时调用 - * todo 法宝重写 */ public static HelpHero heroToHelpHero(User user,Hero hero) throws Exception { // 获取神将类型 @@ -306,6 +305,7 @@ public class CBean2Proto { helpHero.setJewels(jewels); helpHero.setFaxiangs(faxiangs); helpHero.setFourTotalTier(user.getPlayerInfoManager().getFourChallengeTotal()); + helpHero.setBaubles(equipManager.getBaubles(hero.getBauBlesId())); return helpHero; } @@ -1202,13 +1202,13 @@ public class CBean2Proto { /*** * 获取玉虚英雄属性 */ - public static CommonProto.Hero getYuxuHero(Hero yuxuHero,Hero hero){ + public static CommonProto.Hero getYuxuHero(Hero yuxuHero){ CommonProto.Hero hero1 = getHero(yuxuHero); CommonProto.Hero.Builder builder = hero1.toBuilder(); builder.setLevel(yuxuHero.getYuXuLevel()); builder.setBreakId(yuxuHero.getBreakId()); builder.setStarBreakId(yuxuHero.getStarBreakId()); - //显示真实的法宝等级 todo 法宝重写 + builder.setBaublesId(yuxuHero.getBauBlesId()); return builder.build(); }