From 42c7e31723849f66c9a5f150225a422c4efc35b7 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 19 Oct 2020 16:36:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=81=B5=E5=85=BD=20=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/globals/GlobalItemType.java | 2 + .../handler/GameGM/GMRequestHandler.java | 22 +- .../ljsd/jieling/handler/map/MapLogic.java | 21 +- .../com/ljsd/jieling/logic/dao/Pokemon.java | 89 +++-- .../jieling/logic/dao/PokemonManager.java | 27 +- .../ljsd/jieling/logic/fight/CombatLogic.java | 22 +- .../ljsd/jieling/logic/hero/HeroLogic.java | 374 +++++++++--------- .../ljsd/jieling/logic/item/ItemLogic.java | 11 +- .../jieling/logic/mission/MissionLoigc.java | 32 +- .../com/ljsd/jieling/util/CBean2Proto.java | 24 +- .../java/com/ljsd/jieling/util/ItemMap.java | 26 ++ .../java/com/ljsd/jieling/util/ItemUtil.java | 118 ++++-- .../java/com/ljsd/jieling/util/UUIDEnum.java | 3 +- .../src/main/resources/application.properties | 9 +- test/src/main/java/ExcelUtils.java | 2 +- 15 files changed, 450 insertions(+), 332 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/util/ItemMap.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java index 3e3d57620..29c1318a5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java @@ -30,6 +30,8 @@ public interface GlobalItemType { int RIDE = 18;//坐骑 int JEWEL = 19;//宝器 int SELECTSecretBox=20; // 自选宝箱(前端要区分) + int SpecialMonster=21; // 灵兽 + int SpecialMonsterItem=22; // 灵兽碎片 //物品使用类型 int NO_USE = 0 ; //不使用 int RANDOM_USE = 1; // 随机使用 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java index 18bca4b48..4a400cbe5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java @@ -360,17 +360,17 @@ public class GMRequestHandler extends BaseHandler{ cUser.getWorkShopController().updateTechLevel(entry.getValue(),entry.getKey(),max); } //异妖 - Map sDifferDemonsConfigMap = SDifferDemonsConfig.sDifferDemonsConfigMap; - PokemonManager pokemonManager = cUser.getPokemonManager(); - for(Map.Entry entry:sDifferDemonsConfigMap.entrySet()){ - Pokemon pokemon = new Pokemon(entry.getKey()); - for(int component:entry.getValue().getComonpentList()){ - int level = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(component).size(); - pokemon.getComonpentsLevelMap().put(component,level); - pokemon.setAllStage(level); - } - pokemonManager.addPokemon(pokemon); - } +// Map sDifferDemonsConfigMap = SDifferDemonsConfig.sDifferDemonsConfigMap; +// PokemonManager pokemonManager = cUser.getPokemonManager(); +// for(Map.Entry entry:sDifferDemonsConfigMap.entrySet()){ +// Pokemon pokemon = new Pokemon(entry.getKey()); +// for(int component:entry.getValue().getComonpentList()){ +// int level = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(component).size(); +// pokemon.getComonpentsLevelMap().put(component,level); +// pokemon.setAllStage(level); +// } +// pokemonManager.addPokemon(pokemon); +// } break; case GlobalGm.EXPEDITION_SCORE: cUser.getExpeditionManager().addScore(prarm2); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index a2ea02932..4f489c890 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -1779,18 +1779,15 @@ public class MapLogic { crossInfo.getHeroIds().add(hero.getTemplateId()); } - List teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(mapManager.getTeamId()); - if (teamPosForPokenInfos != null) { - // 异妖 - crossInfo.getPokemons().clear(); - for (TeamPosForPokenInfo teamPosForPokenInfo : teamPosForPokenInfos) { - Pokemon pokemon = user.getPokemonManager().getPokemonMap().get(teamPosForPokenInfo.getPokenId()); - if (pokemon == null) { - continue; - } - crossInfo.getPokemons().add(pokemon.getId()); - } - } +// List teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(mapManager.getTeamId()); +// if (teamPosForPokenInfos != null) { +// // 异妖 +// crossInfo.getPokemons().clear(); +// for (TeamPosForPokenInfo teamPosForPokenInfo : teamPosForPokenInfos) { +// Pokemon pokemon = user.getPokemonManager().getPokemonMap().get(teamPosForPokenInfo.getPokenId()); +//// crossInfo.getPokemons().add(pokemon.getId()); +// } +// } crossInfo.setForces(heroForces); SChallengeMapConfig sChallengeMapConfig = STableManager.getConfig(SChallengeMapConfig.class).get(mapManager.getCurMapId()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Pokemon.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Pokemon.java index e18c78d66..3103c1d4c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Pokemon.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Pokemon.java @@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.util.KeyGenUtils; +import com.ljsd.jieling.util.UUIDEnum; import java.util.HashMap; import java.util.HashSet; @@ -10,56 +12,87 @@ import java.util.Set; public class Pokemon extends MongoBase { - private int id; + private int tmpId; - private Map comonpentsLevelMap; // 组件进阶信息 + private String id; + private int level; - private int allStage; + private int star; public Pokemon(){ //绑定关系 this.setRootCollection(User._COLLECTION_NAME); } - public Pokemon(int id){ + public Pokemon(int uid,int tmpId){ this.setRootCollection(User._COLLECTION_NAME); - this.id = id; - this.comonpentsLevelMap = new HashMap<>(); + this.id = KeyGenUtils.produceIdByModule(UUIDEnum.HERO, uid); + this.tmpId = tmpId; + this.level = 1; } - public void upOrActiveComonpent(int comonpentId) throws Exception { - int level =1; - Integer integer = this.comonpentsLevelMap.get(comonpentId); - if( integer != null){ - level = integer+1 ; - } - updateString("comonpentsLevelMap."+comonpentId,level); - this.comonpentsLevelMap.put(comonpentId,level); - } +// public void upOrActiveComonpent(int comonpentId) throws Exception { +// int level =1; +// Integer integer = this.comonpentsLevelMap.get(comonpentId); +// if( integer != null){ +// level = integer+1 ; +// } +// updateString("comonpentsLevelMap."+comonpentId,level); +// this.comonpentsLevelMap.put(comonpentId,level); +// } - public int getAllStage() { - return allStage; - } +// public int getAllStage() { +// return allStage; +// } - public void setAllStage(int allStage) throws Exception { - updateString("allStage",allStage); - this.allStage = allStage; - } +// public void setAllStage(int allStage) throws Exception { +// updateString("allStage",allStage); +// this.allStage = allStage; +// } - public int getId() { + public String getId() { return id; } - public Map getComonpentsLevelMap() { - return comonpentsLevelMap; + public int getTmpId() { + return tmpId; } - public void clearComonpentsLevelMap(){ - this.comonpentsLevelMap.clear(); - updateString("comonpentsLevelMap",new HashMap<>()); + public void setTmpId(int tmpId) { + this.tmpId = tmpId; } + public void setId(String id) { + this.id = id; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public int getStar() { + return star; + } + + public void setStar(int star) { + this.star = star; + } + + + // public Map getComonpentsLevelMap() { +// return comonpentsLevelMap; +// } +// +// public void clearComonpentsLevelMap(){ +// this.comonpentsLevelMap.clear(); +// updateString("comonpentsLevelMap",new HashMap<>()); +// } + } 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 aa7f6a209..a53f31d35 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 @@ -8,32 +8,29 @@ import java.util.HashMap; import java.util.Map; public class PokemonManager extends MongoBase { - private Map pokemonMap=new HashMap<>(); - - private Map ringFireMap=new HashMap<>(); + private Map pokemonMap=new HashMap<>(); public PokemonManager() { this.setRootCollection(User._COLLECTION_NAME); } - public void addPokemon(Pokemon pokemon) throws Exception { - pokemon.init(this.getRootId(),getMongoKey() + ".pokemonMap." + pokemon.getId()); - updateString("pokemonMap." + pokemon.getId(), pokemon); + public void addPokemon(Pokemon pokemon) { pokemonMap.put(pokemon.getId(),pokemon); + updateString("pokemonMap." + pokemon.getId(), pokemon); } - public void addRingFirePokemon(Pokemon pokemon) throws Exception { - pokemon.init(this.getRootId(),getMongoKey() + ".ringFireMap." + pokemon.getId()); - updateString("ringFireMap." + pokemon.getId(), pokemon); - ringFireMap.put(pokemon.getId(),pokemon); - } +// public void addRingFirePokemon(Pokemon pokemon) throws Exception { +// pokemon.init(this.getRootId(),getMongoKey() + ".ringFireMap." + pokemon.getId()); +// updateString("ringFireMap." + pokemon.getId(), pokemon); +// ringFireMap.put(pokemon.getId(),pokemon); +// } - public Map getPokemonMap() { + public Map getPokemonMap() { return pokemonMap; } - public Map getRingFireMap() { - return ringFireMap; - } +// public Map getRingFireMap() { +// return ringFireMap; +// } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index 4b28f81d8..76d9ba575 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -261,6 +261,7 @@ public class CombatLogic { Map randomCardMap = new HashMap<>(); Map randomEquipMap = new HashMap<>(); Map randomRandomMap = new HashMap<>(); + ItemMap itemObj = new ItemMap(); CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder(); CommonProto.Drop.Builder randomBuilder = CommonProto.Drop.newBuilder(); int fightId = mainLevelManager.getFightId(); @@ -274,16 +275,16 @@ public class CombatLogic { } } int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin(); - ItemUtil.combineReward(user,false,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD); + ItemUtil.combineReward(user,false,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,itemObj,BIReason.ADVENTURE_BASE_REWARD); int timesTemp =times; while (timesTemp-->0){ - ItemUtil.combineReward(user,true,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); + ItemUtil.combineReward(user,true,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,itemObj,BIReason.ADVENTURE_RANDOM_REWARDD); } randomEquipMap = equipAutoCombine(randomEquipMap); //清除无用活动道具 removeNoUseItem(user,randomItemMap); - ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD); - ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); + ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,itemObj,BIReason.ADVENTURE_BASE_REWARD); + ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,itemObj,BIReason.ADVENTURE_RANDOM_REWARDD); Map result = new HashMap<>(2); result.put(1,baseBuilder.build()); result.put(2,randomBuilder.build()); @@ -934,6 +935,7 @@ public class CombatLogic { Map randomCardMap = new HashMap<>(); Map randomEquipMap = new HashMap<>(); Map randomRandomMap = new HashMap<>(); + ItemMap itemObj = new ItemMap(); baseBuilder = CommonProto.Drop.newBuilder(); randomBuilder = CommonProto.Drop.newBuilder(); int takeTimes= 0; @@ -942,10 +944,10 @@ public class CombatLogic { Integer times = fightStateInfoItem.getValue(); SMainLevelConfig sMainLevelConfig = SMainLevelConfig.config.get(fightId); int[] randomRewardMin = sMainLevelConfig.getRandomRewardMin(); - ItemUtil.combineReward(user,true,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD); + ItemUtil.combineReward(user,true,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,itemObj,BIReason.ADVENTURE_BASE_REWARD); int timesTemp =times; while (!viewBaseReward&×Temp-->0){ - ItemUtil.combineReward(user,true,sMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); + ItemUtil.combineReward(user,true,sMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,itemObj,BIReason.ADVENTURE_RANDOM_REWARDD); } takeTimes+=times; } @@ -960,10 +962,10 @@ public class CombatLogic { if(maxTimes>0){ times = times > maxTimes?maxTimes:times; int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin(); - ItemUtil.combineReward(user,true,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD); + ItemUtil.combineReward(user,true,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,itemObj,BIReason.ADVENTURE_BASE_REWARD); int timesTemp =times; while (!viewBaseReward&×Temp-->0){ - ItemUtil.combineReward(user,true,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); + ItemUtil.combineReward(user,true,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,itemObj,BIReason.ADVENTURE_RANDOM_REWARDD); } lastTimeTakes=times; } @@ -994,8 +996,8 @@ public class CombatLogic { return this; } mainLevelManager.afterTakeStateReward(reset,lastTimeTakes,time); - ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap, BIReason.ADVENTURE_BASE_REWARD); - ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); + ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,itemObj, BIReason.ADVENTURE_BASE_REWARD); + ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,itemObj,BIReason.ADVENTURE_RANDOM_REWARDD); myResult = false; return this; } 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 6615472ea..3f6b1b751 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 @@ -731,18 +731,18 @@ public class HeroLogic{ cacheHeroIds.add(heroId); } - Map pokemonMap = user.getPokemonManager().getPokemonMap(); - for(CommonProto.TeamPokemonInfo pokemonInfo : pokemonoIds){ - int pokemonId = pokemonInfo.getPokemonId(); - Pokemon pokemon = pokemonMap.get(pokemonId); - - if( pokemon == null){ - return "pokemono not exists"; - } - if(pokemon.getAllStage()==0){ - return "no active"; - } - } +// Map pokemonMap = user.getPokemonManager().getPokemonMap(); +// for(CommonProto.TeamPokemonInfo pokemonInfo : pokemonoIds){ +// int pokemonId = pokemonInfo.getPokemonId(); +// Pokemon pokemon = pokemonMap.get(pokemonId); +// +// if( pokemon == null){ +// return "pokemono not exists"; +// } +// if(pokemon.getAllStage()==0){ +// return "no active"; +// } +// } int size = pokemonoIds.size(); // boolean allowed = user.getPlayerInfoManager().checkAndUpdate(VipPrivilegeType.POKEMON_NUM, size); boolean allowed =checkPokeManPos(user,size); @@ -1337,20 +1337,21 @@ public class HeroLogic{ if (teamPosForPokenInfos==null || teamPosForPokenInfos.isEmpty()){ return ""; } - Map pokemonMap = user.getPokemonManager().getPokemonMap(); - Collections.sort(teamPosForPokenInfos); - int size = teamPosForPokenInfos.size(); - for(int i=0;i pokemonMap = user.getPokemonManager().getPokemonMap(); +// Collections.sort(teamPosForPokenInfos); +// int size = teamPosForPokenInfos.size(); +// for(int i=0;i pokemonMap = user.getPokemonManager().getPokemonMap(); - Collections.sort(teamPosForPokenInfos); - for(TeamPosForPokenInfo teamPosForPokenInfo:teamPosForPokenInfos){ - int pokemonId = teamPosForPokenInfo.getPokenId(); - Pokemon pokemon = pokemonMap.get(pokemonId); - SDifferDemonsStageConfig sDifferDemonsStageConfig = SDifferDemonsStageConfig.getsDifferDemonsStageConfigMap(pokemonId*100 + pokemon.getAllStage()); - if(StringUtil.isEmpty(sDifferDemonsStageConfig.getPassiveSkillString())){ - continue; - } - pokenSkillResult.append(sDifferDemonsStageConfig.getPassiveSkillString()).append("|"); - } - String s = pokenSkillResult.toString(); - if(StringUtil.isEmpty(s)){ - return ""; - } - return s.substring( 0,(s.length()-1)); + //todo 灵兽 +// Map pokemonMap = user.getPokemonManager().getPokemonMap(); +// Collections.sort(teamPosForPokenInfos); +// for(TeamPosForPokenInfo teamPosForPokenInfo:teamPosForPokenInfos){ +// int pokemonId = teamPosForPokenInfo.getPokenId(); +// Pokemon pokemon = pokemonMap.get(pokemonId); +// SDifferDemonsStageConfig sDifferDemonsStageConfig = SDifferDemonsStageConfig.getsDifferDemonsStageConfigMap(pokemonId*100 + pokemon.getAllStage()); +// if(StringUtil.isEmpty(sDifferDemonsStageConfig.getPassiveSkillString())){ +// continue; +// } +// pokenSkillResult.append(sDifferDemonsStageConfig.getPassiveSkillString()).append("|"); +// } +// String s = pokenSkillResult.toString(); +// if(StringUtil.isEmpty(s)){ +// return ""; +// } +// return s.substring( 0,(s.length()-1)); + return ""; } public String getRobotPokenmonSkills(SArenaRobotConfig sArenaRobotConfig){ @@ -1419,24 +1422,25 @@ public class HeroLogic{ PokemonManager pokemonManager = user.getPokemonManager(); SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); int profession = scHero.getProfession(); - Map pokemonMap = pokemonManager.getPokemonMap(); - for(Map.Entry item : pokemonMap.entrySet()){ - Pokemon pokemon = item.getValue(); - Map comonpentsLevelMap = pokemon.getComonpentsLevelMap(); - for(Map.Entry comonpentsLevelItem : comonpentsLevelMap.entrySet()){ - Integer comonpentId = comonpentsLevelItem.getKey(); - Integer comonpentLevel = comonpentsLevelItem.getValue(); - Map sDifferDemonsComonpentsConfigMap = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(comonpentId); - SDifferDemonsComonpentsConfig sDifferDemonsComonpentsConfig = sDifferDemonsComonpentsConfigMap.get(comonpentLevel); - Map> extraAddMap = sDifferDemonsComonpentsConfig.getExtraAddMap(); - if(extraAddMap!=null&&(extraAddMap.containsKey(profession)||extraAddMap.containsKey(0))){ - int innerId = extraAddMap.containsKey(0) ? 0 : profession; - Map professionAddMap = extraAddMap.get(innerId); - combinedAttribute(professionAddMap,heroAllAttribute); - } - combinedAttribute(sDifferDemonsComonpentsConfig.getBaseAttribute(),heroAllAttribute); - } - } + //todo 灵兽 +// Map pokemonMap = pokemonManager.getPokemonMap(); +// for(Map.Entry item : pokemonMap.entrySet()){ +// Pokemon pokemon = item.getValue(); +// Map comonpentsLevelMap = pokemon.getComonpentsLevelMap(); +// for(Map.Entry comonpentsLevelItem : comonpentsLevelMap.entrySet()){ +// Integer comonpentId = comonpentsLevelItem.getKey(); +// Integer comonpentLevel = comonpentsLevelItem.getValue(); +// Map sDifferDemonsComonpentsConfigMap = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(comonpentId); +// SDifferDemonsComonpentsConfig sDifferDemonsComonpentsConfig = sDifferDemonsComonpentsConfigMap.get(comonpentLevel); +// Map> extraAddMap = sDifferDemonsComonpentsConfig.getExtraAddMap(); +// if(extraAddMap!=null&&(extraAddMap.containsKey(profession)||extraAddMap.containsKey(0))){ +// int innerId = extraAddMap.containsKey(0) ? 0 : profession; +// Map professionAddMap = extraAddMap.get(innerId); +// combinedAttribute(professionAddMap,heroAllAttribute); +// } +// combinedAttribute(sDifferDemonsComonpentsConfig.getBaseAttribute(),heroAllAttribute); +// } +// } //装备总战力评分 int equipForce=0; boolean needRemove = false; @@ -2120,110 +2124,112 @@ public class HeroLogic{ int uid = iSession.getUid(); User user = UserManager.getUser(uid); PokemonManager pokemonManager = user.getPokemonManager(); - Map pokemonMap = pokemonManager.getPokemonMap(); + //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)); +// } - //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)); - } - - HeroInfoProto.GetAllPokemonResponse build = HeroInfoProto.GetAllPokemonResponse.newBuilder().addAllPokemonInfo(pokemonInfoList).build(); - MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.GET_ALL_POKEMON_RESPONSE_VALUE,build,true); +// HeroInfoProto.GetAllPokemonResponse build = HeroInfoProto.GetAllPokemonResponse.newBuilder().addAllPokemonInfo(pokemonInfoList).build(); + MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.GET_ALL_POKEMON_RESPONSE_VALUE,null,true); } //异妖相关 组件放置升级 public void pokenmonUpLevel(ISession session,int pokemonId,int comonpentId) throws Exception { + //todo 灵兽 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); - } - Integer oldLevel = pokemon.getComonpentsLevelMap().get(comonpentId); - if( null == oldLevel){ - //消耗组件 - boolean enough = ItemUtil.itemCost(user, new int[][]{{comonpentId, 1}},BIReason.POKEMON_LOAD_CONSUME,pokemonId); - if(!enough){ - throw new ErrorCodeException(ErrorCode.newDefineCode("not enough")); - } - pokemon.upOrActiveComonpent(comonpentId); - MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.POKEMON_COMONPENT_LEVELUP_RESPONSE_VALUE,null,true); - user.getUserMissionManager().onGameEvent(user,GameEvent.POKEMON_UPLEVEL,pokemonId); - return; - } - if (checkPokemonComonpent(pokemonId, comonpentId,oldLevel, user)){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - pokemon.upOrActiveComonpent(comonpentId); +// 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); +// } +// Integer oldLevel = pokemon.getComonpentsLevelMap().get(comonpentId); +// if( null == oldLevel){ +// //消耗组件 +// boolean enough = ItemUtil.itemCost(user, new int[][]{{comonpentId, 1}},BIReason.POKEMON_LOAD_CONSUME,pokemonId); +// if(!enough){ +// throw new ErrorCodeException(ErrorCode.newDefineCode("not enough")); +// } +// pokemon.upOrActiveComonpent(comonpentId); +// MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.POKEMON_COMONPENT_LEVELUP_RESPONSE_VALUE,null,true); +// user.getUserMissionManager().onGameEvent(user,GameEvent.POKEMON_UPLEVEL,pokemonId); +// return; +// } +// if (checkPokemonComonpent(pokemonId, comonpentId,oldLevel, user)){ +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// } +// pokemon.upOrActiveComonpent(comonpentId); //发送成功消息 MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.POKEMON_COMONPENT_LEVELUP_RESPONSE_VALUE,null,true); - user.getUserMissionManager().onGameEvent(user,GameEvent.POKEMON_UPLEVEL,pokemonId); +// user.getUserMissionManager().onGameEvent(user,GameEvent.POKEMON_UPLEVEL,pokemonId); } // 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); - } +// 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); +// } } @@ -2395,34 +2401,37 @@ public class HeroLogic{ return calForce(pokemonAttributeMap)*5; } + //todo 灵兽 public int calAllPokenmonForce(User user){ - Map pokemonAttributeMap = new HashMap<>(); - Map pokemonMap = user.getPokemonManager().getPokemonMap(); - for(Pokemon pokemon : pokemonMap.values()){ - combinePokemonAttribute(pokemonAttributeMap, pokemon,false); - } - - return calForce(pokemonAttributeMap)*5; +// Map pokemonAttributeMap = new HashMap<>(); +// Map pokemonMap = user.getPokemonManager().getPokemonMap(); +// for(Pokemon pokemon : pokemonMap.values()){ +// combinePokemonAttribute(pokemonAttributeMap, pokemon,false); +// } +// +// return calForce(pokemonAttributeMap)*5; + return 0; } private void combinePokemonAttribute(Map pokemonAttributeMap, Pokemon pokemon,boolean needExtra) { - Map comonpentsLevelMap = pokemon.getComonpentsLevelMap(); - for (Map.Entry comonpentsLevelItem : comonpentsLevelMap.entrySet()) { - Integer comonpentId = comonpentsLevelItem.getKey(); - Integer comonpentLevel = comonpentsLevelItem.getValue(); - Map sDifferDemonsComonpentsConfigMap = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(comonpentId); - SDifferDemonsComonpentsConfig sDifferDemonsComonpentsConfig = sDifferDemonsComonpentsConfigMap.get(comonpentLevel); - Map> extraAddMap = sDifferDemonsComonpentsConfig.getExtraAddMap(); - combinedAttribute(sDifferDemonsComonpentsConfig.getBaseAttribute(), pokemonAttributeMap); - - if (needExtra && extraAddMap != null) { - for (Map item : extraAddMap.values()) { - combinedAttribute(item, pokemonAttributeMap); - } - } - } + //todo 灵兽 +// Map comonpentsLevelMap = pokemon.getComonpentsLevelMap(); +// for (Map.Entry comonpentsLevelItem : comonpentsLevelMap.entrySet()) { +// Integer comonpentId = comonpentsLevelItem.getKey(); +// Integer comonpentLevel = comonpentsLevelItem.getValue(); +// Map sDifferDemonsComonpentsConfigMap = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(comonpentId); +// SDifferDemonsComonpentsConfig sDifferDemonsComonpentsConfig = sDifferDemonsComonpentsConfigMap.get(comonpentLevel); +// Map> extraAddMap = sDifferDemonsComonpentsConfig.getExtraAddMap(); +// combinedAttribute(sDifferDemonsComonpentsConfig.getBaseAttribute(), pokemonAttributeMap); +// +// if (needExtra && extraAddMap != null) { +// for (Map item : extraAddMap.values()) { +// combinedAttribute(item, pokemonAttributeMap); +// } +// } +// } } public int calEquipForce(Equip equip){ @@ -2436,16 +2445,17 @@ public class HeroLogic{ } //获取天赋异妖信息 public void getAllRingFire(ISession session) throws Exception { - int uid = session.getUid(); - User user = UserManager.getUser(uid); - PokemonManager pokemonManager = user.getPokemonManager(); - Map ringFireMap = pokemonManager.getRingFireMap(); - HeroInfoProto.GetAllRingFireResponse.Builder builder = HeroInfoProto.GetAllRingFireResponse.newBuilder(); - for(Pokemon pokemon : ringFireMap.values()){ - CommonProto.RingFireInfo ringFire = CBean2Proto.getRingFire(pokemon); - builder.addRingFireInfo(ringFire); - } - MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.GET_RINGFIRE_INFO_RESPONSE_VALUE,builder.build(),true); + //todo 灵兽 +// int uid = session.getUid(); +// User user = UserManager.getUser(uid); +// PokemonManager pokemonManager = user.getPokemonManager(); +// Map ringFireMap = pokemonManager.getRingFireMap(); +// HeroInfoProto.GetAllRingFireResponse.Builder builder = HeroInfoProto.GetAllRingFireResponse.newBuilder(); +// for(Pokemon pokemon : ringFireMap.values()){ +// CommonProto.RingFireInfo ringFire = CBean2Proto.getRingFire(pokemon); +// builder.addRingFireInfo(ringFire); +// } + MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.GET_RINGFIRE_INFO_RESPONSE_VALUE,null,true); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index 14ada64d5..3a97c9148 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -205,6 +205,7 @@ public class ItemLogic { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); + ItemMap itemObj = new ItemMap(); int num=0; for (CommonProto.Item item :itemList){ @@ -215,7 +216,7 @@ public class ItemLogic { } SItem sItem = SItem.getsItemMap().get(item.getItemId()); num+=item.getItemNum(); - ItemUtil.combineReward(user,true,sItem.getRewardGroup(), 1f,itemMap,cardMap,equipMap,randomMap,0); + ItemUtil.combineReward(user,true,sItem.getRewardGroup(), 1f,itemMap,cardMap,equipMap,randomMap,itemObj,0); } int[][] costItemArr = StringUtil.parseFiledInt2(cost.toString()); @@ -225,7 +226,7 @@ public class ItemLogic { throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); } - Map mapRe = ItemUtil.getMapRe(itemId, itemMap, cardMap, equipMap, randomMap); + Map mapRe = ItemUtil.getMapRe(itemId, itemMap, cardMap, equipMap, randomMap,itemObj); if(!mapRe.containsKey(itemId)){ throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); } @@ -342,16 +343,16 @@ public class ItemLogic { Map baseCardMap = new HashMap<>(); Map baseEquipMap = new HashMap<>(); Map baseRandomMap = new HashMap<>(); - + ItemMap itemObj = new ItemMap(); for (int[] ints:items) { - Map mapRe = ItemUtil.getMapRe(ints[0], baseItemMap, baseCardMap, baseEquipMap, baseRandomMap); + Map mapRe = ItemUtil.getMapRe(ints[0], baseItemMap, baseCardMap, baseEquipMap, baseRandomMap,itemObj); if(mapRe.containsKey(ints[0])){ mapRe.put(ints[0],mapRe.get(ints[0])+ints[1]); }else { mapRe.put(ints[0],ints[1]); } } - ItemUtil.drop(user,drop,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.JEWEL_DECOMPOSE); + ItemUtil.drop(user,drop,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,itemObj,BIReason.JEWEL_DECOMPOSE); List reportMap = drop.getItemlistList(); List itemId = new ArrayList<>(reportMap.size()); List itemNum = new ArrayList<>(reportMap.size()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index 7815e8a58..3502fa63e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -529,24 +529,26 @@ public class MissionLoigc { count = cumulationData.getHeroLevleCountMap().get(missionSubType[0]); break; case POKEMON_ADVANCED:{ - Map pokemonMap = user.getPokemonManager().getPokemonMap(); - for(Pokemon pokemon : pokemonMap.values()){ - if(pokemon.getAllStage()>0){ - count++; - } - } + //todo 灵兽 +// Map pokemonMap = user.getPokemonManager().getPokemonMap(); +// for(Pokemon pokemon : pokemonMap.values()){ +// if(pokemon.getAllStage()>0){ +// count++; +// } +// } } break; case POKEMON_FORCE:{ - int maxForce = 0; - Map pokemonMap = user.getPokemonManager().getPokemonMap(); - for(Pokemon pokemon : pokemonMap.values()){ - int force = HeroLogic.getInstance().calPokenmonForce(pokemon); - if(maxForce< HeroLogic.getInstance().calPokenmonForce(pokemon)){ - maxForce=force; - } - } - count = maxForce; + //todo 灵兽 +// int maxForce = 0; +// Map pokemonMap = user.getPokemonManager().getPokemonMap(); +// for(Pokemon pokemon : pokemonMap.values()){ +// int force = HeroLogic.getInstance().calPokenmonForce(pokemon); +// if(maxForce< HeroLogic.getInstance().calPokenmonForce(pokemon)){ +// maxForce=force; +// } +// } +// count = maxForce; } break; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 808e4d1b3..d16c403ad 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -190,17 +190,15 @@ public class CBean2Proto { public static CommonProto.PokemonInfo getPokemon(Pokemon pokemon) { - Map comonpentsLevelMap = pokemon.getComonpentsLevelMap(); - List pokemoncomonpentList = new ArrayList<>(); - for( Map.Entry item: comonpentsLevelMap.entrySet()){ - Integer comonpentId = item.getKey(); - Integer value = item.getValue(); - pokemoncomonpentList.add(CommonProto.Pokemoncomonpent.newBuilder().setId(comonpentId).setLevel(value).build()); - } +// Map comonpentsLevelMap = pokemon.getComonpentsLevelMap(); +// List pokemoncomonpentList = new ArrayList<>(); +// for( Map.Entry item: comonpentsLevelMap.entrySet()){ +// Integer comonpentId = item.getKey(); +// Integer value = item.getValue(); +// pokemoncomonpentList.add(CommonProto.Pokemoncomonpent.newBuilder().setId(comonpentId).setLevel(value).build()); +// } return CommonProto.PokemonInfo.newBuilder() - .setId(pokemon.getId()) - .setStage(pokemon.getAllStage()) - .addAllPokemoncomonpent(pokemoncomonpentList) + .setId(pokemon.getId()).setLevel(pokemon.getLevel()).setStar(pokemon.getStar()).setTempId(pokemon.getTmpId()) .build(); } @@ -354,9 +352,9 @@ public class CBean2Proto { return friend.build(); } - public static CommonProto.RingFireInfo getRingFire(Pokemon pokemon) { - return CommonProto.RingFireInfo.newBuilder().addAllComonpentId(pokemon.getComonpentsLevelMap().keySet()).setStage(pokemon.getAllStage()).setId(pokemon.getId()).build(); - } +// public static CommonProto.RingFireInfo getRingFire(Pokemon pokemon) { +// return CommonProto.RingFireInfo.newBuilder().addAllComonpentId(pokemon.getComonpentsLevelMap().keySet()).setStage(pokemon.getAllStage()).setId(pokemon.getId()).build(); +// } public static List getTechInfo(Collection> techInfoMap){ List result = new ArrayList<>(techInfoMap.size()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemMap.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemMap.java new file mode 100644 index 000000000..ba2cd94d3 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemMap.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.util; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author lvxinran + * @date 2020/10/19 + * @discribe + */ +public class ItemMap { + + private Map specialMonsterMap; + + public Map getSpecialMonsterMap() { + return specialMonsterMap; + } + + public void setSpecialMonsterMap(Map specialMonsterMap) { + this.specialMonsterMap = specialMonsterMap; + } + + public ItemMap() { + this.specialMonsterMap = new HashMap<>(); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index aa55d378a..dfcfa72cc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -78,12 +78,15 @@ public class ItemUtil { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); - selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap); + ItemMap itemObj = new ItemMap(); + + selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap,itemObj); useRandomItem(user,randomMap,reason); addItem(user,itemMap,dropBuilder,reason); addCard(user,cardMap,dropBuilder,reason); addEquip(user,equipMap,dropBuilder,reason); + addSpecialMonster(user,itemObj,dropBuilder,reason); return dropBuilder; } @@ -92,11 +95,15 @@ public class ItemUtil { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); - selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap); + ItemMap itemObj = new ItemMap(); + + selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap,itemObj); useRandomItem(user,randomMap,reason); addItem(user,itemMap,dropBuilder,reason); addCard(user,cardMap,dropBuilder,reason); addEquip(user,equipMap,dropBuilder,reason); + addSpecialMonster(user,itemObj,dropBuilder,reason); + return dropBuilder; } @@ -107,13 +114,17 @@ public class ItemUtil { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); + ItemMap itemObj = new ItemMap(); + for(int[][] itemArr : itemArrs){ - selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap); + selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap,itemObj); } useRandomItem(user,randomMap,reason); addItem(user,itemMap,dropBuilder,reason); addCard(user,cardMap,dropBuilder,reason); addEquip(user,equipMap,dropBuilder,reason); + addSpecialMonster(user,itemObj,dropBuilder,reason); + return dropBuilder; } @@ -126,12 +137,16 @@ public class ItemUtil { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); - selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap); + ItemMap itemObj = new ItemMap(); + + selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap,itemObj); useRandomItem(user,randomMap,reason); addItem(user,itemMap,dropBuilder,reason); addCard(user,cardMap,dropBuilder,reason); addEquip(user,equipMap,dropBuilder,reason); + addSpecialMonster(user,itemObj,dropBuilder,reason); + return dropBuilder; } @@ -142,11 +157,14 @@ public class ItemUtil { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); - selectItemArr(new int[][]{item},cardMap,itemMap,equipMap,randomMap); + ItemMap itemObj = new ItemMap(); + selectItemArr(new int[][]{item},cardMap,itemMap,equipMap,randomMap,itemObj); useRandomItem(user,randomMap,reason); addItem(user,itemMap,dropBuilder,reason); addCard(user,cardMap,dropBuilder,reason); addEquip(user,equipMap,dropBuilder,reason); + addSpecialMonster(user,itemObj,dropBuilder,reason); + } return dropBuilder; } @@ -156,16 +174,19 @@ public class ItemUtil { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); - combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap); + ItemMap itemObj = new ItemMap(); + combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap,itemObj); useRandomItem(user, randomMap,reason); addItem(user, itemMap, dropBuilder,reason); addCard(user, cardMap, dropBuilder,reason); addEquip(user, equipMap, dropBuilder,reason); + addSpecialMonster(user,itemObj,dropBuilder,reason); + } - private static void combineRewardDropGroup(User user, int[] dropGroupIds, float dropRatio, Map itemMap, Map cardMap, Map equipMap, Map randomMap) throws ErrorCodeException{ + private static void combineRewardDropGroup(User user, int[] dropGroupIds, float dropRatio, Map itemMap, Map cardMap, Map equipMap, Map randomMap,ItemMap itemObj) throws ErrorCodeException{ for (int dropGroupId : dropGroupIds) { if(MapLogic.getInstance().getDifficultyReward().containsKey(dropGroupId)){ dropGroupId =MapLogic.getInstance().getDifficultyReward().get(dropGroupId); @@ -174,14 +195,14 @@ public class ItemUtil { if (sRewardGroup == null) { continue; } - selectDrop(user,sRewardGroup, itemMap, cardMap, equipMap, randomMap, dropRatio); + selectDrop(user,sRewardGroup, itemMap, cardMap, equipMap, randomMap,itemObj, dropRatio); int[] extraDropGroupIds = activityExtraDropGroupId(user, dropGroupId); for (int dropExtraGroupId : extraDropGroupIds) { SRewardGroup sRewardGroupExtra = SRewardGroup.getsRewardItemMap().get(dropExtraGroupId); if (sRewardGroupExtra == null) { continue; } - selectDrop(user,sRewardGroupExtra, itemMap, cardMap, equipMap, randomMap, dropRatio); + selectDrop(user,sRewardGroupExtra, itemMap, cardMap, equipMap, randomMap,itemObj, dropRatio); } } } @@ -212,13 +233,17 @@ public class ItemUtil { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); - combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap); + ItemMap itemObj = new ItemMap(); + + combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap,itemObj); useRandomItem(user,randomMap,reason); if (isMapping == 1) { addItemToTemporaryBag(user, itemMap, equipMap, dropBuilder); } else { addItem(user,itemMap,dropBuilder,reason); addEquip(user,equipMap,dropBuilder,reason); + addSpecialMonster(user,itemObj,dropBuilder,reason); + } addCard(user,cardMap,dropBuilder,reason); return dropBuilder; @@ -236,7 +261,9 @@ public class ItemUtil { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); - combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap); + ItemMap itemObj = new ItemMap(); + + combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap,itemObj); return getReward(itemMap,cardMap,equipMap,randomMap); } @@ -245,7 +272,9 @@ public class ItemUtil { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); - selectItemArr(dropGroupIds,cardMap,itemMap,equipMap,randomMap); + ItemMap itemObj = new ItemMap(); + + selectItemArr(dropGroupIds,cardMap,itemMap,equipMap,randomMap,itemObj); return getReward(itemMap,cardMap,equipMap,randomMap); } @@ -256,16 +285,18 @@ public class ItemUtil { Map cardMap = new HashMap<>(); Map equipMap = new HashMap<>(); Map randomMap = new HashMap<>(); + ItemMap itemObj = new ItemMap(); + for(int[][] itemArr : itemArrs){ - selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap); + selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap,itemObj); } return getReward(itemMap,cardMap,equipMap,randomMap); } - public static void combineReward(User user,boolean isLoop,int[] dropGroupIds,float dropRatio, Map itemMap, Map cardMap, Map equipMap, Map randomMap,int reason)throws ErrorCodeException{ - combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap); + public static void combineReward(User user,boolean isLoop,int[] dropGroupIds,float dropRatio, Map itemMap, Map cardMap, Map equipMap, Map randomMap,ItemMap itemObj,int reason)throws ErrorCodeException{ + combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap,itemObj); if(!isLoop){ extraAddItem(user,itemMap,reason); } @@ -294,15 +325,16 @@ public class ItemUtil { } } - public static void combineReward(int[][] itemArr, Map itemMap, Map cardMap, Map equipMap, Map randomMap)throws ErrorCodeException{ - selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap); + public static void combineReward(int[][] itemArr, Map itemMap, Map cardMap, Map equipMap, Map randomMap,ItemMap itemObj)throws ErrorCodeException{ + selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap,itemObj); } - public static void drop(User user,CommonProto.Drop.Builder dropBuilder,Map itemMap, Map cardMap, Map equipMap, Map randomMap,int reason) throws Exception { + public static void drop(User user,CommonProto.Drop.Builder dropBuilder,Map itemMap, Map cardMap, Map equipMap, Map randomMap,ItemMap itemObj,int reason) throws Exception { useRandomItem(user, randomMap, reason); addItem(user, itemMap, dropBuilder,reason); addCard(user, cardMap, dropBuilder,reason); addEquip(user, equipMap, dropBuilder,reason); + addSpecialMonster(user,itemObj,dropBuilder,reason); } public static String getReward(Map itemMap,Map cardMap,Map equipMap, Map randomMap) { @@ -343,19 +375,19 @@ public class ItemUtil { } private static void selectItemArr(int[][] itemArr, Map cardMap, Map - itemMap,Map equipMap,Map randomMap) throws ErrorCodeException{ + itemMap,Map equipMap,Map randomMap,ItemMap itemObj) throws ErrorCodeException{ for (int[] items : itemArr){ - getMap(items[0],items[1], itemMap, cardMap,equipMap,randomMap,1); + getMap(items[0],items[1], itemMap, cardMap,equipMap,randomMap,itemObj,1); } } private static void selectItemArr(MapitemArr, Map cardMap, Map - itemMap,Map equipMap,Map randomMap) throws ErrorCodeException{ + itemMap,Map equipMap,Map randomMap,ItemMap itemObj) throws ErrorCodeException{ for (Map.Entry items : itemArr.entrySet()){ - getMap(items.getKey(), items.getValue(), itemMap, cardMap,equipMap,randomMap,1); + getMap(items.getKey(), items.getValue(), itemMap, cardMap,equipMap,randomMap,itemObj,1); } } - private static void selectDrop(User user, SRewardGroup sRewardGroup,Map itemMap, Map cardMap,Map equipMap,Map randomMap , float dropRatio)throws ErrorCodeException { + private static void selectDrop(User user, SRewardGroup sRewardGroup,Map itemMap, Map cardMap,Map equipMap,Map randomMap ,ItemMap itemObj, float dropRatio)throws ErrorCodeException { String dropInfo = dropRewardMap.get(sRewardGroup.getId()); String rewardStr = dropInfo.split("\\|")[0]; String weight = dropInfo.split("\\|")[1]; @@ -383,15 +415,15 @@ public class ItemUtil { switch (sRewardGroup.getIsUpset()) { case GlobalItemType.SELETEONE: case GlobalItemType.ALL_DROP: - getMap(user,StringUtil.parseFiledInt(rewardStr),itemMap,cardMap,equipMap,randomMap,dropRatio); + getMap(user,StringUtil.parseFiledInt(rewardStr),itemMap,cardMap,equipMap,randomMap,itemObj,dropRatio); break; case GlobalItemType.WEIGHT_DROP: getRandomMap(user,sRewardGroup.getRewardMaxNum(),rewards,weights, - itemMap,cardMap,equipMap,randomMap,dropRatio); + itemMap,cardMap,equipMap,randomMap,itemObj,dropRatio); break; case GlobalItemType.SUCCESSIVELY_RANDOM: getSuccessivelyRandmoMap(user,sRewardGroup,rewards,weights, - itemMap,cardMap,equipMap,randomMap,dropRatio); + itemMap,cardMap,equipMap,randomMap,itemObj,dropRatio); break; default: break; @@ -400,7 +432,7 @@ public class ItemUtil { private static void getSuccessivelyRandmoMap(User user,SRewardGroup sRewardGroup, String[] rewardArr, String[] weightArr, Map itemMap, Map - cardMap, Map equipMap, Map randomMap, float dropRatio) throws ErrorCodeException { + cardMap, Map equipMap, Map randomMap,ItemMap itemObj, float dropRatio) throws ErrorCodeException { for (int i = 0; i < sRewardGroup.getRewardMaxNum(); i++) { int id = 0; for (int j = 0; j < sRewardGroup.getLoop(); j++) { @@ -419,12 +451,12 @@ public class ItemUtil { if (itemNum <= 0) { continue; } - getMap(sRewardItem.getItemId(), itemNum, itemMap, cardMap, equipMap, randomMap, dropRatio); + getMap(sRewardItem.getItemId(), itemNum, itemMap, cardMap, equipMap, randomMap,itemObj, dropRatio); } } private static void getRandomMap(User user,int randomItemNum ,String[] rewardArr,String[] weightArr, Map itemMap, Map cardMap, - Map equipMap,Map randomMap ,float dropRatio)throws ErrorCodeException { + Map equipMap,Map randomMap ,ItemMap itemObj,float dropRatio)throws ErrorCodeException { for (int i = 0 ; i < randomItemNum;i++){ int index = MathUtils.randomForStrArray(weightArr); if (index == -1) { @@ -436,7 +468,7 @@ public class ItemUtil { if (itemNum <= 0){ continue; } - getMap(sRewardItem.getItemId(),itemNum, itemMap, cardMap,equipMap,randomMap,dropRatio); + getMap(sRewardItem.getItemId(),itemNum, itemMap, cardMap,equipMap,randomMap,itemObj,dropRatio); } } @@ -469,25 +501,25 @@ public class ItemUtil { return itemNum; } - private static void getMap(User user,int[] itemInfo, Map itemMap,Map cardMap,Map equipMap,Map randomMap ,float dropRatio) throws ErrorCodeException{ + private static void getMap(User user,int[] itemInfo, Map itemMap,Map cardMap,Map equipMap,Map randomMap,ItemMap itemObj,float dropRatio) throws ErrorCodeException{ for (int id :itemInfo){ SRewardItem sRewardItem = SRewardItem.getsDropMap().get(id); int itemNum = getItemNum(user,sRewardItem); if (itemNum <= 0){ continue; } - getMap(sRewardItem.getItemId(),itemNum,itemMap, cardMap,equipMap,randomMap,dropRatio); + getMap(sRewardItem.getItemId(),itemNum,itemMap, cardMap,equipMap,randomMap,itemObj,dropRatio); } } private static void getMap(int itemId ,int itemNum, Map itemMap, - Map cardMap,Map equipMap ,Map randomMap,float dropRatio) throws ErrorCodeException{ - Map mapRe = getMapRe(itemId, itemMap, cardMap, equipMap, randomMap); + Map cardMap,Map equipMap ,Map randomMap,ItemMap itemObj,float dropRatio) throws ErrorCodeException{ + Map mapRe = getMapRe(itemId, itemMap, cardMap, equipMap, randomMap,itemObj); putcountMap(itemId,(int)MathUtils.numRount((itemNum * MathUtils.floatToDouble(dropRatio))) , mapRe); } public static Map getMapRe(int itemId, Map itemMap, - Map cardMap,Map equipMap ,Map randomMap) throws ErrorCodeException{ + Map cardMap,Map equipMap ,Map randomMap,ItemMap itemObj) throws ErrorCodeException{ SItem sItem = SItem.getsItemMap().get(itemId); if(sItem==null){ @@ -506,6 +538,8 @@ public class ItemUtil { return equipMap; case GlobalItemType.RANDOM_ITME: return randomMap; + case GlobalItemType.SpecialMonster: + return itemObj.getSpecialMonsterMap(); default: LOGGER.error("新增类型请通知后端"); return new HashMap<>(); @@ -529,6 +563,7 @@ public class ItemUtil { case GlobalItemType.DECORATION: case GlobalItemType.RIDE: case GlobalItemType.SELECTSecretBox: + case GlobalItemType.SpecialMonsterItem: itemType = GlobalItemType.ITEM; break; case GlobalItemType.RANDOM_ITME: @@ -1549,4 +1584,17 @@ public class ItemUtil { } return new int[0]; } + + private static void addSpecialMonster(User user,ItemMap itemObj,CommonProto.Drop.Builder dropBuilder,int reason){ + if(itemObj.getSpecialMonsterMap().isEmpty()){ + return; + } + for(Map.Entry entry:itemObj.getSpecialMonsterMap().entrySet()){ + for(int i = 0 ; i oldFileNames = new HashSet<>();