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 fbb79ab80..179155ad5 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 @@ -2079,238 +2079,6 @@ public class HeroLogic{ } return quality; } - -// public void getAllPokemon(ISession iSession) throws Exception { -// int uid = iSession.getUid(); -// User user = UserManager.getUser(uid); -// PokemonManager pokemonManager = user.getPokemonManager(); -// //todo 灵兽 -// Map pokemonMap = pokemonManager.getPokemonMap(); -//// -//// //TODO 测试 -//// if(pokemonMap.isEmpty()){ -//// for(SDifferDemonsConfig sDifferDemonsConfig : SDifferDemonsConfig.sDifferDemonsConfigMap.values() ){ -//// pokemonManager.addPokemon(new Pokemon(sDifferDemonsConfig.getId())); -//// } -//// } -// List pokemonInfoList = new ArrayList<>(); -//// -// for(Pokemon pokemon : pokemonMap.values()){ -// pokemonInfoList.add(CBean2Proto.getPokemon(pokemon)); -// } -// 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); -// } - - //异妖相关 组件放置升级 - public void pokemonUpLevel(ISession session, String pokemonId, int level, MessageTypeProto.MessageType messageType) throws Exception { - //todo 灵兽 - int uid = session.getUid(); - User user = UserManager.getUser(uid); - PokemonManager pokemonManager = user.getPokemonManager(); - if(!pokemonManager.getPokemonMap().containsKey(pokemonId)){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId); - if(level<=pokemon.getLevel()){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - - Map levelMap = SSpiritAnimalLevel.configByQualityAndLevel.get(3); - Map costMap = new HashMap<>(); - int finalLevel = pokemon.getLevel(); - for(int i = pokemon.getLevel();i0){ - for(int[] consumeOne:consume){ - costMap.put(consumeOne[0],costMap.getOrDefault(consumeOne[0],0)+consumeOne[1]); - } - } - boolean b = ItemUtil.checkCost(user, costMap); - if(!b){ - finalLevel = i; - break; - } - finalLevel = i+1; - } - - - - ItemUtil.itemCost(user,costMap,BIReason.SPECIAL_LEVEL_UP_CONSUME,1); - pokemonManager.updatePokemonLevel(pokemonId,finalLevel); - - HeroInfoProto.PokenmonUpLevelResponse response = HeroInfoProto.PokenmonUpLevelResponse.newBuilder().setLevel(finalLevel).build(); - //发送成功消息 - MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true); -// user.getUserMissionManager().onGameEvent(user,GameEvent.POKEMON_UPLEVEL,pokemonId); - - } - - /** - * 灵兽升星 - * @param session - * @param pokemonId - * @param consumePokemonIdsList - * @throws Exception - */ - public void pokemonAdvanced(ISession session,String pokemonId,List consumePokemonIdsList) throws Exception { - int uid = session.getUid(); - User user = UserManager.getUser(uid); - PokemonManager pokemonManager = user.getPokemonManager(); - Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId); - if(pokemon == null){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - Map configMap = SSpiritAnimalStar.configByQualityAndStar.get(3); - - if(!configMap.containsKey(pokemon.getStar())){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - SSpiritAnimalStar config = configMap.get(pokemon.getStar()); - if(config.getConsumeItemNum()!=consumePokemonIdsList.size()){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - for(String consume:consumePokemonIdsList){ - Pokemon consumePokemon = pokemonManager.getPokemonMap().get(consume); - if(consumePokemon==null){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - if(consumePokemon.getTmpId()!=pokemon.getTmpId()){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - if(consumePokemon.getLevel()!=1||consumePokemon.getStar()!=0){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - } - int[][] consumeRes = config.getConsumeRes(); - boolean itemCost = ItemUtil.itemCost(user, consumeRes, BIReason.SPECIAL_STAR_UP_CONSUME, 1); - if(!itemCost){ - throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); - } - for(String consume:consumePokemonIdsList) { - pokemonManager.removePokemon(consume); - } - pokemonManager.updatePokemonStar(pokemonId,pokemon.getStar()+1); - MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.POKEMON_ADVANCED_RESPONSE_VALUE,null,true); - } - - /** - * 灵兽涅槃 - * @param session - * @param pokemonId - * @param level - * @param messageType - * @throws Exception - */ - public void pokemonBack(ISession session, String pokemonId, MessageTypeProto.MessageType messageType) throws Exception { - int uid = session.getUid(); - User user = UserManager.getUser(uid); - PokemonManager pokemonManager = user.getPokemonManager(); - Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId); - if (pokemon == null) { - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - if (pokemon.getLevel() == 1 && pokemon.getStar() == 0) { - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - - int tmpId = pokemon.getTmpId(); - SSpiritAnimal animalConfig = STableManager.getConfig(SSpiritAnimal.class).get(tmpId); - Map costMap = new HashMap<>(); - costMap.put(animalConfig.getReturnCost()[0], animalConfig.getReturnCost()[1]); - if (ItemUtil.checkCost(user, costMap)) { - throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); - } - Map returnMap = new HashMap<>(); - - getPokemonReturnReward(pokemon, returnMap); - - //本体返还 - SSpiritAnimalStar starConfig = SSpiritAnimalStar.configByQualityAndStar.get(animalConfig.getQuality()).get(pokemon.getStar()); - int sumItemNum = starConfig.getSumItemNum(); - if (sumItemNum != 0) { - returnMap.put(tmpId, returnMap.getOrDefault(tmpId, 0) + sumItemNum); - } - ItemUtil.itemCost(user, costMap, BIReason.SPECIAL_BACK_CONSUME, 1); - - CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(returnMap), BIReason.SPECIAL_MONSTER_REWARD); - - HeroInfoProto.PokemonBackResponse response = HeroInfoProto.PokemonBackResponse.newBuilder().setDrop(drop).build(); - - MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true); - } - // -// public void pokemonAdvanced(ISession session,int pokemonId) throws Exception { -// int uid = session.getUid(); -// User user = UserManager.getUser(uid); -// PokemonManager pokemonManager = user.getPokemonManager(); -// Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId); -// if(pokemon == null){ -// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); -// } -// SDifferDemonsConfig sDifferDemonsConfig = SDifferDemonsConfig.getsDifferDemonsConfigByPokenID(pokemonId); -// int[] comonpentList = sDifferDemonsConfig.getComonpentList(); -// Map comonpentsLevelMap = pokemon.getComonpentsLevelMap(); -// SDifferDemonsStageConfig sDifferDemonsStageConfig = SDifferDemonsStageConfig.getsDifferDemonsStageConfigMap(pokemonId*100 + pokemon.getAllStage() + 1); -// int comonpentPreStage = sDifferDemonsStageConfig.getComonpentPreStage(); -// -// boolean isEnough = true; -// for(int i=0;i=SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_rankup_differ_content_parm)){ -// message = SErrorCodeEerverConfig.getI18NMessage("lamp_rankup_differ_content_"+sDifferDemonsConfig.getQuality(), new Object[]{user.getPlayerInfoManager().getNickName(), sDifferDemonsConfig.getName(),pokemon.getAllStage()}); -// } -// if(message!=null){ -// ChatLogic.getInstance().sendSysChatMessage(message,Global.DILIGENT,sDifferDemonsConfig.getId(),0,0,0,0,0); -// } - //TODO isMyself ??? public int calTeamTotalForce(User targetUser,int teamId,boolean isMyself){ int totalForce =0; @@ -3073,4 +2841,156 @@ public class HeroLogic{ } } } + + /** + * 灵兽升级 + * @param session + * @param pokemonId + * @param level + * @param messageType + * @throws Exception + */ + public void pokemonUpLevel(ISession session, String pokemonId, int level, MessageTypeProto.MessageType messageType) throws Exception { + //todo 灵兽 + int uid = session.getUid(); + User user = UserManager.getUser(uid); + PokemonManager pokemonManager = user.getPokemonManager(); + if(!pokemonManager.getPokemonMap().containsKey(pokemonId)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId); + if(level<=pokemon.getLevel()){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + + Map levelMap = SSpiritAnimalLevel.configByQualityAndLevel.get(3); + Map costMap = new HashMap<>(); + int finalLevel = pokemon.getLevel(); + for(int i = pokemon.getLevel();i0){ + for(int[] consumeOne:consume){ + costMap.put(consumeOne[0],costMap.getOrDefault(consumeOne[0],0)+consumeOne[1]); + } + } + boolean b = ItemUtil.checkCost(user, costMap); + if(!b){ + finalLevel = i; + break; + } + finalLevel = i+1; + } + + + + ItemUtil.itemCost(user,costMap,BIReason.SPECIAL_LEVEL_UP_CONSUME,1); + pokemonManager.updatePokemonLevel(pokemonId,finalLevel); + + HeroInfoProto.PokenmonUpLevelResponse response = HeroInfoProto.PokenmonUpLevelResponse.newBuilder().setLevel(finalLevel).build(); + //发送成功消息 + MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true); +// user.getUserMissionManager().onGameEvent(user,GameEvent.POKEMON_UPLEVEL,pokemonId); + + } + + /** + * 灵兽升星 + * @param session + * @param pokemonId + * @param consumePokemonIdsList + * @throws Exception + */ + public void pokemonAdvanced(ISession session,String pokemonId,List consumePokemonIdsList) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + PokemonManager pokemonManager = user.getPokemonManager(); + Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId); + if(pokemon == null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + Map configMap = SSpiritAnimalStar.configByQualityAndStar.get(3); + + if(!configMap.containsKey(pokemon.getStar())){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + SSpiritAnimalStar config = configMap.get(pokemon.getStar()); + if(config.getConsumeItemNum()!=consumePokemonIdsList.size()){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + for(String consume:consumePokemonIdsList){ + Pokemon consumePokemon = pokemonManager.getPokemonMap().get(consume); + if(consumePokemon==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if(consumePokemon.getTmpId()!=pokemon.getTmpId()){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if(consumePokemon.getLevel()!=1||consumePokemon.getStar()!=0){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } + int[][] consumeRes = config.getConsumeRes(); + boolean itemCost = ItemUtil.itemCost(user, consumeRes, BIReason.SPECIAL_STAR_UP_CONSUME, 1); + if(!itemCost){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + for(String consume:consumePokemonIdsList) { + pokemonManager.removePokemon(consume); + } + pokemonManager.updatePokemonStar(pokemonId,pokemon.getStar()+1); + MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.POKEMON_ADVANCED_RESPONSE_VALUE,null,true); + } + + /** + * 灵兽涅槃 + * @param session + * @param pokemonId + * @param level + * @param messageType + * @throws Exception + */ + public void pokemonBack(ISession session, String pokemonId, MessageTypeProto.MessageType messageType) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + PokemonManager pokemonManager = user.getPokemonManager(); + Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId); + if (pokemon == null) { + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if (pokemon.getLevel() == 1 && pokemon.getStar() == 0) { + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + + int tmpId = pokemon.getTmpId(); + SSpiritAnimal animalConfig = STableManager.getConfig(SSpiritAnimal.class).get(tmpId); + Map costMap = new HashMap<>(); + costMap.put(animalConfig.getReturnCost()[0], animalConfig.getReturnCost()[1]); + if (ItemUtil.checkCost(user, costMap)) { + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + Map returnMap = new HashMap<>(); + + getPokemonReturnReward(pokemon, returnMap); + + //本体返还 + SSpiritAnimalStar starConfig = SSpiritAnimalStar.configByQualityAndStar.get(animalConfig.getQuality()).get(pokemon.getStar()); + int sumItemNum = starConfig.getSumItemNum(); + if (sumItemNum != 0) { + returnMap.put(tmpId, returnMap.getOrDefault(tmpId, 0) + sumItemNum); + } + ItemUtil.itemCost(user, costMap, BIReason.SPECIAL_BACK_CONSUME, 1); + + CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(returnMap), BIReason.SPECIAL_MONSTER_REWARD); + + HeroInfoProto.PokemonBackResponse response = HeroInfoProto.PokemonBackResponse.newBuilder().setDrop(drop).build(); + + MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true); + } }