罗浮争锋排行榜信息

xuexinpeng 2022-01-03 00:24:50 +08:00
parent bd6d205053
commit b0e341601e
2 changed files with 81 additions and 2 deletions

View File

@ -45,10 +45,10 @@ public class GetPlayerOneTeamInfo extends BaseHandler<PlayerInfoProto.GetPlayerO
oneTeamInfo = PlayerLogic.getInstance().getOneTeamInfo(info.getEnemyId(),proto.getTeamId(),info);
}else{
//真人
List<Integer> teamId =new ArrayList<>();
List<Integer> teamId =new ArrayList<>(1);
teamId.add(proto.getTeamId());
//oneTeamInfo = PlayerLogic.getInstance().getCrossOneTeamInfo(proto.getPlayerId(),proto.getTeamId());
PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo( PlayerLogic.getInstance().getCrossYxldOneTeamInfo(proto.getPlayerId(), teamId));
PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo( PlayerLogic.getInstance().getCrossYxldOneTeamInfoNew(proto.getPlayerId(), teamId));
MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.GET_PLAYER_ONE_TEAM_INFO_RESPONSE.getNumber(),playerTeamInfo.build(),true);
return;
}

View File

@ -1040,6 +1040,85 @@ public class PlayerLogic {
return builder.build();
}
//获取跨服玩家信息
public CommonProto.TeamOneInfo getCrossYxldOneTeamInfoNew(int id,List<Integer> team) throws Exception {
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id);
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(id).setCrossTeamScore(csPlayer.getCrossYuxulundaoNewScore())
.setServerName(serverName);
//如果是本服玩家 直接本服调用数据
CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class);
if(GameApplication.serverId == csPlayer.getServerId()){
User user = UserManager.getUser(id);
return PlayerLogic.getInstance().getCrossYxldMyTeamInfo(user, team);
}
CrossArenaManager crossArenaManager = getCrossArenaManagerData(csPlayer) ;
if(crossArenaManager == null){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
}
//rpc 数据调用测试
for(int teamId: team){
CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
List<com.ljsd.jieling.thrift.idl.TeamPosHeroInfo> teamPosHeroInfos = crossArenaManager.getTeams().get(teamId);
if(teamPosHeroInfos!=null){
for (com.ljsd.jieling.thrift.idl.TeamPosHeroInfo heroInfo:teamPosHeroInfos) {
com.ljsd.jieling.thrift.idl.ArenaOfHero hero = crossArenaManager.getHeros().get(heroInfo.getHeroId());
teamOneTeamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder()
.setHeroid(hero.getId())
.setHeroTid(hero.getTemplateId())
.setLevel(hero.getLevel())
.setStar(hero.getStar())
.setPosition(heroInfo.getPosition())
.setSkinId(hero.getSkin())
.build());
}
}
if(crossArenaManager.getPokemons()!=null){
Map<String, com.ljsd.jieling.thrift.idl.Pokemon> pokemonMap = crossArenaManager.getPokemons();
Map<Integer, String> teamMap = crossArenaManager.getPokemonTeamMap();
for(Map.Entry<Integer, String> entry :teamMap.entrySet()){
// clone 深度复制
com.ljsd.jieling.thrift.idl.Pokemon pokemon = pokemonMap.get(entry.getValue());
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 = crossArenaManager.getTotalForceByTeam().getOrDefault(teamId,0);
teamOneTeamInfo.setTotalForce(integer);
if(crossArenaManager.getSeals()!= null){
for(Map.Entry<Integer, com.ljsd.jieling.thrift.idl.PurpleMansionSeal> entry:crossArenaManager.getSeals().entrySet()){
com.ljsd.jieling.thrift.idl.PurpleMansionSeal value = entry.getValue();
com.ljsd.jieling.thrift.idl.ArenaOfHero arenaOfHero = crossArenaManager.getHeros().get(value.getSubId());
if(value.getState()==0){
continue;
}
teamOneTeamInfo.addSealShow(CommonProto.PurpleSealShowInfo.newBuilder().setType(value.getType()).setId(value.getSealId()).setHeroTId(arenaOfHero==null?0:arenaOfHero.getTemplateId()));
}
}
//builder.setTeam(teamOneTeamInfo.build());
//builder.addCrossTeam(teamOneTeamInfo.build());
builder.setTeam(teamOneTeamInfo.build());
}
//PlayerInfoProto.GetPlayerCrossYxldOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerCrossYxldOneTeamInfoResponse.newBuilder().setTeamInfo(builder.build());
return builder.build();
}
public PlayerInfoProto.GetPlayerOneTeamInfoResponse getCrossOneTeamInfo(int id,List<Integer> crossTeamId) throws Exception {
ArenaOfUser query = CrossServiceLogic.getInstance().query(id);
if(query==null){