From 7281a39cd27f416efd86d7eedeb95a9812baf3b8 Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Mon, 3 Jan 2022 01:01:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E9=98=9F=E4=BC=8Dteam?= =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3=20=20=E5=B8=AE=E4=BC=9Aid=E8=B5=8B?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crossService/CrossServiceLogic.java | 2 + .../jieling/logic/player/PlayerLogic.java | 71 ++++++++++++++++++- 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java index b1ddd5d5c..67d826c0e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java @@ -309,6 +309,7 @@ public class CrossServiceLogic { player.setUserMount(p.getUserMount()); player.setCrossYuxulundaoNewScore(newScore); player.setCrossYuxulundaoOldScore(oldScore); + player.setGuildId(p.getGuildId()); //player.setGuildId(); //三个队伍总战力 int force1 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE, false); @@ -357,6 +358,7 @@ public class CrossServiceLogic { player.setUserMount(p.getUserMount()); player.setCrossYuxulundaoNewScore(0); player.setCrossYuxulundaoOldScore(0); + player.setGuildId(p.getGuildId()); //player.setGuildId(); //三个队伍总战力 int force1 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE, false); 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 76bf3ea9e..5bf78a9c3 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 @@ -933,6 +933,75 @@ public class PlayerLogic { } return builder.build(); } + //获取跨服玩家信息 + public CommonProto.TeamOneInfo getCrossYxldMyTeamInfoNew(User user,List team) throws Exception{ + CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(user.getId()); + if(csPlayer==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + //基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用 + String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId()); + CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder() + .setHead(csPlayer.getHead()) + .setHeadFrame(csPlayer.getHeadFrame()) + .setUserTitle(csPlayer.getUserTitle()) + .setLevel(csPlayer.getLevel()) + .setName(csPlayer.getName()) + .setGuildName("nb guild") //csPlayer.getGuildName() + .setPracticeLevel(csPlayer.getPracticeLevel()) + .setUid(user.getId()).setCrossTeamScore(csPlayer.getCrossYuxulundaoNewScore()) + .setServerName(serverName); + for(int teamId: team){ + CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder(); + List teamPosHeroInfos =user.getTeamPosManager().getTeamPosForHero().getOrDefault(teamId,new ArrayList<>()); + if(teamPosHeroInfos!=null){ + for (TeamPosHeroInfo heroInfo:teamPosHeroInfos){ + Map heroMap = user.getHeroManager().getHeroMap(); + Hero hero = heroMap.get(heroInfo.getHeroId()); + if(hero == null){ + continue; + } + teamOneTeamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder() + .setHeroid(hero.getId()) + .setHeroTid(hero.getTemplateId()) + .setLevel(hero.getLevel(user.getHeroManager())) + .setStar(hero.getStar()) + .setPosition(heroInfo.getPosition()) + .setSkinId(hero.getSkin()) + .build()); + } + } + // 灵兽 + Map pokemonMap = user.getPokemonManager().getPokemonMap(); + Map teamMap = user.getPokemonManager().getPokemonTeamMap(); + for (Map.Entry entry : teamMap.entrySet()) { + // clone 深度复制 + Pokemon pokemon = (Pokemon)pokemonMap.get(entry.getValue()).clone(); + pokemon.setTmpId(pokemon.getTmpId()); + pokemon.setId(pokemon.getId()); + pokemon.setLevel(pokemon.getLevel()); + pokemon.setStar(pokemon.getStar()); + teamOneTeamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(pokemon, entry.getKey())); + } + //LOGGER.info("=====================跨服获取阵容:{}",teamId); + Integer integer = HeroLogic.getInstance().calTeamTotalForce(user, teamId, false); + teamOneTeamInfo.setTotalForce(integer); + + for(Map.Entry entry:user.getHeroManager().getPurpleMansionSeal().entrySet()){ + PurpleMansionSeal value = entry.getValue(); + Map heroMap = user.getHeroManager().getHeroMap(); + Hero hero = heroMap.get(value.getSubId()); + if(value.getState()==0){ + continue; + } + teamOneTeamInfo.addSealShow(CommonProto.PurpleSealShowInfo.newBuilder().setType(value.getType()). + setId(value.getSealId()).setHeroTId(hero==null?0:hero.getTemplateId())); + } + builder.setTeam(teamOneTeamInfo.build()); + //builder.addCrossTeam(teamOneTeamInfo.build()); + } + return builder.build(); + } public CrossArenaManager getCrossArenaManagerData(CSPlayer csPlayer )throws Exception{ String rpcString = RedisUtil.getInstence().getObject(RedisKey.LOGIC_SERVER_INFO, String.valueOf(csPlayer.getServerId()), String.class, -1); String ip = rpcString.split(":")[0]; @@ -1065,7 +1134,7 @@ public class PlayerLogic { CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class); if(GameApplication.serverId == csPlayer.getServerId()){ User user = UserManager.getUser(id); - return PlayerLogic.getInstance().getCrossYxldMyTeamInfo(user, team); + return PlayerLogic.getInstance().getCrossYxldMyTeamInfoNew(user, team); } CrossArenaManager crossArenaManager = getCrossArenaManagerData(csPlayer) ; if(crossArenaManager == null){