diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllTeamPosHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllTeamPosHandler.java new file mode 100644 index 000000000..b643509f8 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllTeamPosHandler.java @@ -0,0 +1,21 @@ +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.MessageTypeProto; +import org.springframework.stereotype.Component; + +@Component +public class GetAllTeamPosHandler extends BaseHandler{ + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.GET_TEAMPOS_INFO_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + HeroLogic.getInstance().getAllTeamPosInfo(iSession); + + } +} 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 e10db0c2e..408fb7888 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/SaveTeamPosHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/SaveTeamPosHandler.java @@ -3,6 +3,7 @@ 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; @@ -19,9 +20,10 @@ public class SaveTeamPosHandler extends BaseHandler{ @Override public void process(ISession iSession, PacketNetData netData) throws Exception { HeroInfoProto.TeamposSaveRequest teamposSaveRequest = HeroInfoProto.TeamposSaveRequest.parseFrom(netData.parseClientProtoNetData()); - int teamId = teamposSaveRequest.getTeamId(); - List heroIdsList = teamposSaveRequest.getHeroIdsList(); - List pokemonIdsList = teamposSaveRequest.getPokemonIdsList(); + CommonProto.TeamPosInfo teamPosInfo = teamposSaveRequest.getTeamPosInfo(); + int teamId = teamPosInfo.getTeamId(); + List heroIdsList = teamPosInfo.getHeroIdsList(); + List pokemonIdsList = teamPosInfo.getPokemonIdsList(); HeroLogic.getInstance().saveTeamPos(iSession,teamId,heroIdsList,pokemonIdsList); } } 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 c80b4a9d2..3eb174ed4 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 @@ -22,6 +22,8 @@ public class HeroLogic { private HeroLogic(){} + + public static class Instance { public final static HeroLogic instance = new HeroLogic(); } @@ -174,20 +176,51 @@ public class HeroLogic { return sb.toString(); } + public void getAllTeamPosInfo(ISession session) throws Exception { + User user = UserManager.getUser(session.getUid()); + List teamPosInfoList = new ArrayList<>(); + TeamPosManager teamPosManager = user.getTeamPosManager(); + Map> teamPosForHero = teamPosManager.getTeamPosForHero(); + Map teamNames = teamPosManager.getTeamNames(); + Map> teamPosForPoken = teamPosManager.getTeamPosForPoken(); + for(Integer teamId:teamPosForHero.keySet()){ + List heroIds = teamPosForHero.get(teamId); + List pokenIds = teamPosForPoken.get(teamId); + if(null == pokenIds){ + pokenIds = new ArrayList<>(1); + } + String teamName = teamNames.get(teamId); + if(StringUtil.isEmpty(teamName)){ + teamName=""; + } + teamPosInfoList.add( + CommonProto.TeamPosInfo.newBuilder() + .addAllHeroIds(heroIds) + .addAllPokemonIds(pokenIds) + .setTeamName(teamName) + .build() + ); + } + HeroInfoProto.GetAllTeamPosResponse build = HeroInfoProto.GetAllTeamPosResponse.newBuilder().addAllTeamPosInfo(teamPosInfoList).build(); + 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 { User user = UserManager.getUser(iSession.getUid()); - String err = checkTeamPos(user, teamId, heroIds); + String err = checkTeamPos(user, heroIds); if(!"".equals(err)){ - MessageUtil.sendMessage(iSession,0,MessageTypeProto.MessageType.TEAM_POS_SAVE_RESPONSE_VALUE,null,true); + MessageUtil.sendErrorResponse(iSession,0,MessageTypeProto.MessageType.TEAM_POS_SAVE_RESPONSE_VALUE,err); return; } user.getTeamPosManager().changeTeamInfo(teamId,heroIds,pokemonoIds); + MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.TEAM_POS_SAVE_RESPONSE_VALUE,null,true); } - public String checkTeamPos(User user,int teamId,List heroIds){ + public String checkTeamPos(User user,List heroIds){ if(heroIds ==null || heroIds.isEmpty()){ - return ""; + return "队伍信息错误"; } + Set cacheHeroIds = new HashSet<>(); Collection> values = user.getTeamPosManager().getTeamPosForHero().values(); for(String heroId : heroIds){