异妖编队修改

back_recharge
jiahuiwen 2020-10-20 17:56:27 +08:00
parent 1c0cbabcad
commit defb87c5da
10 changed files with 93 additions and 103 deletions

View File

@ -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<CommonProto.TeamPokemonInfo> teamPokemonInfosList = replaceTeamPokemonInfoRequest.getTeamPokemonInfosList();
HeroLogic.getInstance().savePokemonTeam(iSession, teamPokemonInfosList);
}
}

View File

@ -23,7 +23,6 @@ public class SaveTeamPosHandler extends BaseHandler{
CommonProto.TeamPosInfo teamPosInfo = teamposSaveRequest.getTeamPosInfo();
int teamId = teamPosInfo.getTeamId();
List<CommonProto.TeamHeroInfo> teamHeroInfosList = teamPosInfo.getTeamHeroInfosList();
List<CommonProto.TeamPokemonInfo> teamPokemonInfosList = teamPosInfo.getTeamPokemonInfosList();
HeroLogic.getInstance().saveTeamPos(iSession,teamId,teamHeroInfosList,teamPokemonInfosList);
HeroLogic.getInstance().saveTeamPos(iSession,teamId,teamHeroInfosList);
}
}

View File

@ -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<TeamPosForPokenInfo> teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(snapTeamId);
if (null!=teamPosForPokenInfos) {
List<Integer> pokens = new ArrayList<>();
for (TeamPosForPokenInfo teamPosForPokenInfo : teamPosForPokenInfos) {
pokens.add(teamPosForPokenInfo.getPokenId());
}
fightInfo.setPokenmonIds(pokens);
}
// List<TeamPosForPokenInfo> teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(snapTeamId);
// if (null!=teamPosForPokenInfos) {
// List<Integer> pokens = new ArrayList<>();
// for (TeamPosForPokenInfo teamPosForPokenInfo : teamPosForPokenInfos) {
// pokens.add(teamPosForPokenInfo.getPokenId());
// }
// fightInfo.setPokenmonIds(pokens);
// }
fightInfo.setPokenmonSkills(pokenmonSkills);
fightInfo.setPassiveSkills(pokenmonPassiveSkills);
}

View File

@ -694,16 +694,6 @@ public class ChampionshipLogic {
fightInfo.setPokenmonSkills(pokenmonSkills);
String pokenmonPassiveSkills = HeroLogic.getInstance().getPokenmonPassiveSkills(user, snapTeamId);
fightInfo.setPassiveSkills(pokenmonPassiveSkills);
List<TeamPosForPokenInfo> teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(snapTeamId);
if (teamPosForPokenInfos != null) {
List<Integer> 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);

View File

@ -10,6 +10,9 @@ import java.util.Map;
public class PokemonManager extends MongoBase {
private Map<String,Pokemon> pokemonMap=new HashMap<>();
// 异妖编队
private Map<Integer, String> pokemonTeamMap = new HashMap<>();
public PokemonManager() {
this.setRootCollection(User._COLLECTION_NAME);
}
@ -31,6 +34,14 @@ public class PokemonManager extends MongoBase {
}
public Map<Integer, String> getPokemonTeamMap() {
return pokemonTeamMap;
}
public void updatePokemonTeamMap(Map<Integer, String> pokemonTeamMap){
this.pokemonTeamMap = pokemonTeamMap;
updateString("pokemonTeamMap", pokemonTeamMap);
}
public Map<String, Pokemon> getPokemonMap() {
return pokemonMap;

View File

@ -12,7 +12,6 @@ public class TeamPosManager extends MongoBase {
private Map<Integer, List<TeamPosHeroInfo>> teamPosForHero;
private Map<Integer,String> teamNames;
private Map<Integer,List<TeamPosForPokenInfo>> 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<CommonProto.TeamHeroInfo> heroIds, List<CommonProto.TeamPokemonInfo> pokemonoIds) throws Exception {
public void changeTeamInfo(int teamId, List<CommonProto.TeamHeroInfo> heroIds) throws Exception {
List<TeamPosHeroInfo> teamPosHeroInfoList = new ArrayList<>(5);
for(CommonProto.TeamHeroInfo teamHeroInfo : heroIds){
TeamPosHeroInfo teamPosHeroInfo = new TeamPosHeroInfo(teamHeroInfo.getHeroId(), teamHeroInfo.getPosition());
teamPosHeroInfoList.add(teamPosHeroInfo);
}
List<TeamPosForPokenInfo> 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<Integer, List<TeamPosForPokenInfo>> getTeamPosForPoken() {
return teamPosForPoken;
}
public int getCurTeamPosId() {
return curTeamPosId;
}

View File

@ -588,14 +588,6 @@ public class ExpeditionLogic {
//玩家未激活异妖(神器)时,敌人阵容中不会出现异妖;激活异妖后,由敌人数据来源方决定战斗时是否有敌方异妖。
String pokenmonSkills = HeroLogic.getInstance().getPokenmonSkills(user, snapTeamId);
String pokenmonPassiveSkills = HeroLogic.getInstance().getPokenmonPassiveSkills(user, snapTeamId);
List<TeamPosForPokenInfo> teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(snapTeamId);
if (null!=teamPosForPokenInfos) {
List<Integer> pokens = new ArrayList<>();
for (TeamPosForPokenInfo teamPosForPokenInfo : teamPosForPokenInfos) {
pokens.add(teamPosForPokenInfo.getPokenId());
}
fightInfo.setPokenmonIds(pokens);
}
fightInfo.setPokenmonSkills(pokenmonSkills);
fightInfo.setPassiveSkills(pokenmonPassiveSkills);
}

View File

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

View File

@ -572,7 +572,6 @@ public class HeroLogic{
TeamPosManager teamPosManager = user.getTeamPosManager();
Map<Integer, List<TeamPosHeroInfo>> teamPosForHero = teamPosManager.getTeamPosForHero();
Map<Integer, String> teamNames = teamPosManager.getTeamNames();
Map<Integer, List<TeamPosForPokenInfo>> teamPosForPoken = teamPosManager.getTeamPosForPoken();
for(Map.Entry<Integer, List<TeamPosHeroInfo>> item :teamPosForHero.entrySet()){
int teamId = item.getKey();
List<TeamPosHeroInfo> teamPosHeroInfoList = item.getValue();
@ -581,10 +580,6 @@ public class HeroLogic{
// teamPosHeroInfoList = teamPosForHero.get(1);
// }
// }
List<TeamPosForPokenInfo> 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<CommonProto.TeamPokemonInfo> 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<CommonProto.TeamHeroInfo> heroIds , List<CommonProto.TeamPokemonInfo> pokemonoIds) throws Exception {
public void saveTeamPos(ISession iSession, int teamId, List<CommonProto.TeamHeroInfo> heroIds) throws Exception {
User user = UserManager.getUser(iSession.getUid());
HeroManager heroManager = user.getHeroManager();
Set<Integer> 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<TeamPosHeroInfo> 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<CommonProto.TeamHeroInfo> heroIds, List<CommonProto.TeamPokemonInfo> pokemonoIds ){
/**
*
* @param session
* @param teamPokemonInfos
*/
public void savePokemonTeam(ISession session, List<CommonProto.TeamPokemonInfo> 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<String, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
Map<Integer, String> 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<CommonProto.TeamHeroInfo> 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<size;i++){
int[] condition = differLocation[i];
switch (condition[0]){
case 1:
if(!MissionLoigc.checkMainLevel(user, condition[1])){
return false;
}
break;
case 2:
if(user.getPlayerInfoManager().getLevel()<condition[1]){
return false;
}
break;
}
}
return true;
}
public void upHeroLevel(ISession session,String heroId,int targetLevel) throws Exception {
User user = UserManager.getUser(session.getUid());
@ -1333,10 +1321,6 @@ public class HeroLogic{
public String getPokenmonSkills(User user,int teamId){
StringBuilder pokenSkillResult = new StringBuilder();
List<TeamPosForPokenInfo> teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(teamId);
if (teamPosForPokenInfos==null || teamPosForPokenInfos.isEmpty()){
return "";
}
//todo 灵兽
// Map<Integer, Pokemon> 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<TeamPosForPokenInfo> teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(teamId);
if (teamPosForPokenInfos==null){
return "";
}
//todo 灵兽
// Map<Integer, Pokemon> 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<CommonProto.TeamPokemonInfo> teamPokemonInfos = new ArrayList<>();
for (Map.Entry<Integer, String> 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);
}

View File

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