From defb87c5da2bf50827005529aff92dab27c55947 Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Tue, 20 Oct 2020 17:56:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=82=E5=A6=96=E7=BC=96=E9=98=9F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/PokemonReplaceRequestHandler.java | 27 ++++++ .../jieling/handler/SaveTeamPosHandler.java | 3 +- .../com/ljsd/jieling/kefu/Cmd_role_gm.java | 16 ++-- .../logic/championship/ChampionshipLogic.java | 10 -- .../jieling/logic/dao/PokemonManager.java | 11 +++ .../jieling/logic/dao/TeamPosManager.java | 15 +-- .../logic/expedition/ExpeditionLogic.java | 8 -- .../jieling/logic/family/GuildFightLogic.java | 10 +- .../ljsd/jieling/logic/hero/HeroLogic.java | 91 ++++++++----------- .../jieling/logic/player/PlayerLogic.java | 5 - 10 files changed, 93 insertions(+), 103 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/PokemonReplaceRequestHandler.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/PokemonReplaceRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/PokemonReplaceRequestHandler.java new file mode 100644 index 000000000..650ba1ac0 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/PokemonReplaceRequestHandler.java @@ -0,0 +1,27 @@ +package com.ljsd.jieling.handler; + +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.HeroInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class PokemonReplaceRequestHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.POKEMON_REPLACE_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + byte[] bytes = netData.parseClientProtoNetData(); + HeroInfoProto.ReplaceTeamPokemonInfoRequest replaceTeamPokemonInfoRequest = HeroInfoProto.ReplaceTeamPokemonInfoRequest.parseFrom(bytes); + List teamPokemonInfosList = replaceTeamPokemonInfoRequest.getTeamPokemonInfosList(); + HeroLogic.getInstance().savePokemonTeam(iSession, teamPokemonInfosList); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/SaveTeamPosHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/SaveTeamPosHandler.java index 6fff65e95..8a1c92c5b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/SaveTeamPosHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/SaveTeamPosHandler.java @@ -23,7 +23,6 @@ public class SaveTeamPosHandler extends BaseHandler{ CommonProto.TeamPosInfo teamPosInfo = teamposSaveRequest.getTeamPosInfo(); int teamId = teamPosInfo.getTeamId(); List teamHeroInfosList = teamPosInfo.getTeamHeroInfosList(); - List teamPokemonInfosList = teamPosInfo.getTeamPokemonInfosList(); - HeroLogic.getInstance().saveTeamPos(iSession,teamId,teamHeroInfosList,teamPokemonInfosList); + HeroLogic.getInstance().saveTeamPos(iSession,teamId,teamHeroInfosList); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_role_gm.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_role_gm.java index a46d838d7..febb383b0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_role_gm.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_role_gm.java @@ -223,14 +223,14 @@ public class Cmd_role_gm extends GmRoleAbstract { //玩家未激活异妖(神器)时,敌人阵容中不会出现异妖;激活异妖后,由敌人数据来源方决定战斗时是否有敌方异妖。 String pokenmonSkills = HeroLogic.getInstance().getPokenmonSkills(user, snapTeamId); String pokenmonPassiveSkills = HeroLogic.getInstance().getPokenmonPassiveSkills(user, snapTeamId); - List teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(snapTeamId); - if (null!=teamPosForPokenInfos) { - List pokens = new ArrayList<>(); - for (TeamPosForPokenInfo teamPosForPokenInfo : teamPosForPokenInfos) { - pokens.add(teamPosForPokenInfo.getPokenId()); - } - fightInfo.setPokenmonIds(pokens); - } +// List teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(snapTeamId); +// if (null!=teamPosForPokenInfos) { +// List pokens = new ArrayList<>(); +// for (TeamPosForPokenInfo teamPosForPokenInfo : teamPosForPokenInfos) { +// pokens.add(teamPosForPokenInfo.getPokenId()); +// } +// fightInfo.setPokenmonIds(pokens); +// } fightInfo.setPokenmonSkills(pokenmonSkills); fightInfo.setPassiveSkills(pokenmonPassiveSkills); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java index ec171fcfc..7c824765c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java @@ -694,16 +694,6 @@ public class ChampionshipLogic { fightInfo.setPokenmonSkills(pokenmonSkills); String pokenmonPassiveSkills = HeroLogic.getInstance().getPokenmonPassiveSkills(user, snapTeamId); fightInfo.setPassiveSkills(pokenmonPassiveSkills); - List teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(snapTeamId); - if (teamPosForPokenInfos != null) { - List pokens = new ArrayList<>(); - for (TeamPosForPokenInfo teamPosForPokenInfo : teamPosForPokenInfos) { - pokens.add(teamPosForPokenInfo.getPokenId()); - } - fightInfo.setPokenmonIds(pokens); - } - - memberInfo.setFightInfo(fightInfo); joinMembers.put(memberInfo.getUid(), memberInfo); RedisUtil.getInstence().putMapEntry(RedisKey.CHAMPION_JOIN, "", String.valueOf(uid), memberInfo); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PokemonManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PokemonManager.java index 144974a5e..e7324810e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PokemonManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PokemonManager.java @@ -10,6 +10,9 @@ import java.util.Map; public class PokemonManager extends MongoBase { private Map pokemonMap=new HashMap<>(); + // 异妖编队 + private Map pokemonTeamMap = new HashMap<>(); + public PokemonManager() { this.setRootCollection(User._COLLECTION_NAME); } @@ -31,6 +34,14 @@ public class PokemonManager extends MongoBase { } + public Map getPokemonTeamMap() { + return pokemonTeamMap; + } + + public void updatePokemonTeamMap(Map pokemonTeamMap){ + this.pokemonTeamMap = pokemonTeamMap; + updateString("pokemonTeamMap", pokemonTeamMap); + } public Map getPokemonMap() { return pokemonMap; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosManager.java index a8b350035..26f58143e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosManager.java @@ -12,7 +12,6 @@ public class TeamPosManager extends MongoBase { private Map> teamPosForHero; private Map teamNames; - private Map> teamPosForPoken; @Transient private int curTeamPosId; @Transient @@ -25,7 +24,6 @@ public class TeamPosManager extends MongoBase { teamNames = new HashMap<>(3); teamPosForHero = new HashMap<>(3); - teamPosForPoken = new HashMap<>(3); } public void changeName(int teamId,String teamName) throws Exception { @@ -33,21 +31,14 @@ public class TeamPosManager extends MongoBase { updateString("teamNames",teamNames); } - public void changeTeamInfo(int teamId, List heroIds, List pokemonoIds) throws Exception { + public void changeTeamInfo(int teamId, List heroIds) throws Exception { List teamPosHeroInfoList = new ArrayList<>(5); for(CommonProto.TeamHeroInfo teamHeroInfo : heroIds){ TeamPosHeroInfo teamPosHeroInfo = new TeamPosHeroInfo(teamHeroInfo.getHeroId(), teamHeroInfo.getPosition()); teamPosHeroInfoList.add(teamPosHeroInfo); } - List teamPosForPokenInfos = new ArrayList<>(5); - for(CommonProto.TeamPokemonInfo teamPokemonInfo : pokemonoIds){ - teamPosForPokenInfos.add(new TeamPosForPokenInfo(teamPokemonInfo.getPosition(),teamPokemonInfo.getPokemonId())); - - } teamPosForHero.put(teamId,teamPosHeroInfoList); - teamPosForPoken.put(teamId,teamPosForPokenInfos); updateString("teamPosForHero",teamPosForHero); - updateString("teamPosForPoken",teamPosForPoken); cacheTeamPro.remove(teamId); } @@ -78,10 +69,6 @@ public class TeamPosManager extends MongoBase { return teamPosForHero; } - public Map> getTeamPosForPoken() { - return teamPosForPoken; - } - public int getCurTeamPosId() { return curTeamPosId; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java index d1f5f4e0d..4cc47d0b0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java @@ -588,14 +588,6 @@ public class ExpeditionLogic { //玩家未激活异妖(神器)时,敌人阵容中不会出现异妖;激活异妖后,由敌人数据来源方决定战斗时是否有敌方异妖。 String pokenmonSkills = HeroLogic.getInstance().getPokenmonSkills(user, snapTeamId); String pokenmonPassiveSkills = HeroLogic.getInstance().getPokenmonPassiveSkills(user, snapTeamId); - List teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(snapTeamId); - if (null!=teamPosForPokenInfos) { - List pokens = new ArrayList<>(); - for (TeamPosForPokenInfo teamPosForPokenInfo : teamPosForPokenInfos) { - pokens.add(teamPosForPokenInfo.getPokenId()); - } - fightInfo.setPokenmonIds(pokens); - } fightInfo.setPokenmonSkills(pokenmonSkills); fightInfo.setPassiveSkills(pokenmonPassiveSkills); } 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 6aeea7c99..ffa1f8908 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 @@ -158,11 +158,11 @@ public class GuildFightLogic { force = HeroLogic.getInstance().calTeamTotalForce(user, 1, false); } oneInfo.setTotalForce(force); - if (teamPosManager.getTeamPosForPoken().get(1) != null && teamPosManager.getTeamPosForPoken().get(1).size() > 0) { - for (TeamPosForPokenInfo posForPokenInfo : teamPosManager.getTeamPosForPoken().get(1)) { - oneInfo.addPokemonInfos(posForPokenInfo.getPokenId()); - } - } +// if (teamPosManager.getTeamPosForPoken().get(1) != null && teamPosManager.getTeamPosForPoken().get(1).size() > 0) { +// for (TeamPosForPokenInfo posForPokenInfo : teamPosManager.getTeamPosForPoken().get(1)) { +// oneInfo.addPokemonInfos(posForPokenInfo.getPokenId()); +// } +// } } Family.FamilyDefendDetailViewResponse.Builder response = Family.FamilyDefendDetailViewResponse.newBuilder(); response.setTeamInfo(oneInfo); 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 66c981d57..d1bfa1b5a 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 @@ -572,7 +572,6 @@ public class HeroLogic{ TeamPosManager teamPosManager = user.getTeamPosManager(); Map> teamPosForHero = teamPosManager.getTeamPosForHero(); Map teamNames = teamPosManager.getTeamNames(); - Map> teamPosForPoken = teamPosManager.getTeamPosForPoken(); for(Map.Entry> item :teamPosForHero.entrySet()){ int teamId = item.getKey(); List teamPosHeroInfoList = item.getValue(); @@ -581,10 +580,6 @@ public class HeroLogic{ // teamPosHeroInfoList = teamPosForHero.get(1); // } // } - List teamPosForPokenInfos = teamPosForPoken.get(teamId); - if(null == teamPosForPokenInfos){ - teamPosForPokenInfos = new ArrayList<>(1); - } String teamName = teamNames.get(teamId); if(StringUtil.isEmpty(teamName)){ teamName=""; @@ -595,16 +590,9 @@ public class HeroLogic{ CommonProto.TeamHeroInfo.newBuilder().setPosition(teamPosHeroInfo.getPosition()).setHeroId(teamPosHeroInfo.getHeroId()).build() ); } - List pokemonInfoList = new ArrayList<>(); - for(TeamPosForPokenInfo teamPokemonInfo : teamPosForPokenInfos){ - pokemonInfoList.add( - CommonProto.TeamPokemonInfo.newBuilder().setPokemonId(teamPokemonInfo.getPokenId()).setPosition(teamPokemonInfo.getPosition()).build() - ); - } teamPosInfoList.add( CommonProto.TeamPosInfo.newBuilder() .addAllTeamHeroInfos(teamHeroInfoList) - .addAllTeamPokemonInfos(pokemonInfoList) .setTeamName(teamName) .setTeamId(teamId) .build() @@ -614,7 +602,7 @@ public class HeroLogic{ MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.GET_TEAMPOS_INFO_RESPONSE_VALUE,build,true); } - public void saveTeamPos(ISession iSession, int teamId, List heroIds , List pokemonoIds) throws Exception { + public void saveTeamPos(ISession iSession, int teamId, List heroIds) throws Exception { User user = UserManager.getUser(iSession.getUid()); HeroManager heroManager = user.getHeroManager(); Set set = new HashSet<>(); @@ -641,11 +629,11 @@ public class HeroLogic{ if(set.size()!=heroIds.size()){ throw new ErrorCodeException(ErrorCode.NO_USE_SAME_HERO); } - String err = checkTeamPos(user, teamId,heroIds,pokemonoIds); + String err = checkTeamPos(user, teamId,heroIds); if(!"".equals(err)){ throw new ErrorCodeException(ErrorCode.newDefineCode(err)); } - user.getTeamPosManager().changeTeamInfo(teamId,heroIds,pokemonoIds); + user.getTeamPosManager().changeTeamInfo(teamId,heroIds); //401图内可以更改编队 if(teamId == GlobalsDef.ENDLESS_TEAM){ List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); @@ -682,7 +670,7 @@ public class HeroLogic{ MessageUtil.sendIndicationMessage(iSession,1, MessageTypeProto.MessageType.ENDLESS_MAP_SET_TEAM_INDICATION_VALUE,response,true); } }else{ - user.getTeamPosManager().changeTeamInfo(teamId,heroIds,pokemonoIds); + user.getTeamPosManager().changeTeamInfo(teamId,heroIds); } @@ -700,7 +688,31 @@ public class HeroLogic{ MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.TEAM_POS_SAVE_RESPONSE_VALUE,null,true); } - public String checkTeamPos(User user, int teamId,List heroIds, List pokemonoIds ){ + /** + * 保存异妖阵容 + * @param session + * @param teamPokemonInfos + */ + public void savePokemonTeam(ISession session, List teamPokemonInfos) throws Exception { + if (teamPokemonInfos == null || teamPokemonInfos.isEmpty()) { + LOGGER.info("savePokemonTeam uid=>{} , teamPokemonInfos isEmpty", session.getUid()); + throw new ErrorCodeException(ErrorCode.newDefineCode("Pokemon null")); + } + User user = UserManager.getUser(session.getUid()); + Map pokemonMap = user.getPokemonManager().getPokemonMap(); + Map pokemonTeamMap = new HashMap<>(); + for (CommonProto.TeamPokemonInfo teamPokemonInfo : teamPokemonInfos) { + if (!pokemonMap.containsKey(teamPokemonInfo.getPokemonId())) { + LOGGER.info("savePokemonTeam uid=>{} , pokemon non-existent id=>{}", user.getId(), teamPokemonInfo.getPokemonId()); + throw new ErrorCodeException(ErrorCode.newDefineCode("Pokemon null")); + } + pokemonTeamMap.put(teamPokemonInfo.getPosition(), teamPokemonInfo.getPokemonId()); + } + user.getPokemonManager().updatePokemonTeamMap(pokemonTeamMap); + MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.POKEMON_REPLACE_RESPONSE.getNumber(), null); + } + + public String checkTeamPos(User user, int teamId,List heroIds){ if(heroIds ==null || heroIds.isEmpty()){ return ""; } @@ -743,34 +755,10 @@ public class HeroLogic{ // return "no active"; // } // } - int size = pokemonoIds.size(); // boolean allowed = user.getPlayerInfoManager().checkAndUpdate(VipPrivilegeType.POKEMON_NUM, size); - boolean allowed =checkPokeManPos(user,size); - if(!allowed){ - return "now allowd"; - } return ""; } - private boolean checkPokeManPos(User user ,int size){ - int[][] differLocation = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getDifferLocation(); - for(int i=0;i teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(teamId); - if (teamPosForPokenInfos==null || teamPosForPokenInfos.isEmpty()){ - return ""; - } //todo 灵兽 // Map pokemonMap = user.getPokemonManager().getPokemonMap(); // Collections.sort(teamPosForPokenInfos); @@ -1357,10 +1341,6 @@ public class HeroLogic{ public String getPokenmonPassiveSkills(User user,int teamId){ StringBuilder pokenSkillResult = new StringBuilder(); - List teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(teamId); - if (teamPosForPokenInfos==null){ - return ""; - } //todo 灵兽 // Map pokemonMap = user.getPokemonManager().getPokemonMap(); // Collections.sort(teamPosForPokenInfos); @@ -2138,8 +2118,17 @@ public class HeroLogic{ for(Pokemon pokemon : pokemonMap.values()){ pokemonInfoList.add(CBean2Proto.getPokemon(pokemon)); } - - HeroInfoProto.GetAllPokemonResponse build = HeroInfoProto.GetAllPokemonResponse.newBuilder().addAllPokemonInfo(pokemonInfoList).build(); + List teamPokemonInfos = new ArrayList<>(); + for (Map.Entry entry : pokemonManager.getPokemonTeamMap().entrySet()) { + CommonProto.TeamPokemonInfo teamPokemonInfo = CommonProto.TeamPokemonInfo.newBuilder() + .setPokemonId(entry.getValue()) + .setPosition(entry.getKey()) + .build(); + teamPokemonInfos.add(teamPokemonInfo); + } + HeroInfoProto.GetAllPokemonResponse build = HeroInfoProto.GetAllPokemonResponse.newBuilder().addAllPokemonInfo(pokemonInfoList) + .addAllTeamPokemonInfos(teamPokemonInfos) + .build(); MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.GET_ALL_POKEMON_RESPONSE_VALUE,build,true); } 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 06bcc07da..5ae6234e8 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 @@ -556,11 +556,6 @@ public class PlayerLogic { TeamPosManager teamPosManager = user.getTeamPosManager(); CommonProto.TeamOneTeamInfo.Builder teamInfo = CommonProto.TeamOneTeamInfo.newBuilder(); teamInfo.setTotalForce(HeroLogic.getInstance().calTeamTotalForce(user,teamId,false)); - if(teamPosManager.getTeamPosForPoken().get(teamId)!=null&&teamPosManager.getTeamPosForPoken().get(teamId).size()>0){ - for(TeamPosForPokenInfo posForPokenInfo:teamPosManager.getTeamPosForPoken().get(teamId)){ - teamInfo.addPokemonInfos(posForPokenInfo.getPokenId()); - } - } if(teamPosManager.getTeamPosForHero().containsKey(teamId)){ for (TeamPosHeroInfo heroInfo:teamPosManager.getTeamPosForHero().get(teamId)) { Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId());