获取编队

back_recharge
wangyuan 2019-02-15 10:53:59 +08:00
parent 53361a76b7
commit ad8bef2b7e
3 changed files with 63 additions and 7 deletions

View File

@ -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);
}
}

View File

@ -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<String> heroIdsList = teamposSaveRequest.getHeroIdsList();
List<Integer> pokemonIdsList = teamposSaveRequest.getPokemonIdsList();
CommonProto.TeamPosInfo teamPosInfo = teamposSaveRequest.getTeamPosInfo();
int teamId = teamPosInfo.getTeamId();
List<String> heroIdsList = teamPosInfo.getHeroIdsList();
List<Integer> pokemonIdsList = teamPosInfo.getPokemonIdsList();
HeroLogic.getInstance().saveTeamPos(iSession,teamId,heroIdsList,pokemonIdsList);
}
}

View File

@ -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<CommonProto.TeamPosInfo> teamPosInfoList = new ArrayList<>();
TeamPosManager teamPosManager = user.getTeamPosManager();
Map<Integer, List<String>> teamPosForHero = teamPosManager.getTeamPosForHero();
Map<Integer, String> teamNames = teamPosManager.getTeamNames();
Map<Integer, List<Integer>> teamPosForPoken = teamPosManager.getTeamPosForPoken();
for(Integer teamId:teamPosForHero.keySet()){
List<String> heroIds = teamPosForHero.get(teamId);
List<Integer> 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<String> heroIds ,List<Integer> 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<String> heroIds){
public String checkTeamPos(User user,List<String> heroIds){
if(heroIds ==null || heroIds.isEmpty()){
return "";
return "队伍信息错误";
}
Set<String> cacheHeroIds = new HashSet<>();
Collection<List<String>> values = user.getTeamPosManager().getTeamPosForHero().values();
for(String heroId : heroIds){