灵兽 结构修改,部分接口修改

back_recharge
lvxinran 2020-10-19 16:36:17 +08:00
parent 674e421e27
commit 42c7e31723
15 changed files with 450 additions and 332 deletions

View File

@ -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; // 随机使用

View File

@ -360,17 +360,17 @@ public class GMRequestHandler extends BaseHandler{
cUser.getWorkShopController().updateTechLevel(entry.getValue(),entry.getKey(),max);
}
//异妖
Map<Integer, SDifferDemonsConfig> sDifferDemonsConfigMap = SDifferDemonsConfig.sDifferDemonsConfigMap;
PokemonManager pokemonManager = cUser.getPokemonManager();
for(Map.Entry<Integer, SDifferDemonsConfig> 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<Integer, SDifferDemonsConfig> sDifferDemonsConfigMap = SDifferDemonsConfig.sDifferDemonsConfigMap;
// PokemonManager pokemonManager = cUser.getPokemonManager();
// for(Map.Entry<Integer, SDifferDemonsConfig> 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);

View File

@ -1779,18 +1779,15 @@ public class MapLogic {
crossInfo.getHeroIds().add(hero.getTemplateId());
}
List<TeamPosForPokenInfo> 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<TeamPosForPokenInfo> 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());

View File

@ -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<Integer,Integer> 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<Integer, Integer> 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<Integer, Integer> getComonpentsLevelMap() {
// return comonpentsLevelMap;
// }
//
// public void clearComonpentsLevelMap(){
// this.comonpentsLevelMap.clear();
// updateString("comonpentsLevelMap",new HashMap<>());
// }
}

View File

@ -8,32 +8,29 @@ import java.util.HashMap;
import java.util.Map;
public class PokemonManager extends MongoBase {
private Map<Integer,Pokemon> pokemonMap=new HashMap<>();
private Map<Integer,Pokemon> ringFireMap=new HashMap<>();
private Map<String,Pokemon> 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<Integer, Pokemon> getPokemonMap() {
public Map<String, Pokemon> getPokemonMap() {
return pokemonMap;
}
public Map<Integer, Pokemon> getRingFireMap() {
return ringFireMap;
}
// public Map<Integer, Pokemon> getRingFireMap() {
// return ringFireMap;
// }
}

View File

@ -261,6 +261,7 @@ public class CombatLogic {
Map<Integer, Integer> randomCardMap = new HashMap<>();
Map<Integer, Integer> randomEquipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, CommonProto.Drop> result = new HashMap<>(2);
result.put(1,baseBuilder.build());
result.put(2,randomBuilder.build());
@ -934,6 +935,7 @@ public class CombatLogic {
Map<Integer, Integer> randomCardMap = new HashMap<>();
Map<Integer, Integer> randomEquipMap = new HashMap<>();
Map<Integer,Integer> 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&&timesTemp-->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&&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);
}
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;
}

View File

@ -731,18 +731,18 @@ public class HeroLogic{
cacheHeroIds.add(heroId);
}
Map<Integer, Pokemon> 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<Integer, Pokemon> 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<Integer, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
Collections.sort(teamPosForPokenInfos);
int size = teamPosForPokenInfos.size();
for(int i=0;i<size;i++){
TeamPosForPokenInfo teamPosForPokenInfo = teamPosForPokenInfos.get(i);
int pokemonId = teamPosForPokenInfo.getPokenId();
int position = teamPosForPokenInfo.getPosition();
Pokemon pokemon = pokemonMap.get(pokemonId);
SDifferDemonsStageConfig sDifferDemonsStageConfig = SDifferDemonsStageConfig.getsDifferDemonsStageConfigMap(pokemonId*100 + pokemon.getAllStage());
pokenSkillResult.append(position).append("#").append(sDifferDemonsStageConfig.getSkillId());
if(i!=size-1){
pokenSkillResult.append("|");
}
}
//todo 灵兽
// Map<Integer, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
// Collections.sort(teamPosForPokenInfos);
// int size = teamPosForPokenInfos.size();
// for(int i=0;i<size;i++){
// TeamPosForPokenInfo teamPosForPokenInfo = teamPosForPokenInfos.get(i);
// int pokemonId = teamPosForPokenInfo.getPokenId();
// int position = teamPosForPokenInfo.getPosition();
// Pokemon pokemon = pokemonMap.get(pokemonId);
// SDifferDemonsStageConfig sDifferDemonsStageConfig = SDifferDemonsStageConfig.getsDifferDemonsStageConfigMap(pokemonId*100 + pokemon.getAllStage());
// pokenSkillResult.append(position).append("#").append(sDifferDemonsStageConfig.getSkillId());
// if(i!=size-1){
// pokenSkillResult.append("|");
// }
// }
return pokenSkillResult.toString();
}
@ -1360,22 +1361,24 @@ public class HeroLogic{
if (teamPosForPokenInfos==null){
return "";
}
Map<Integer, Pokemon> 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<Integer, Pokemon> 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<Integer, Pokemon> pokemonMap = pokemonManager.getPokemonMap();
for(Map.Entry<Integer,Pokemon> item : pokemonMap.entrySet()){
Pokemon pokemon = item.getValue();
Map<Integer, Integer> comonpentsLevelMap = pokemon.getComonpentsLevelMap();
for(Map.Entry<Integer, Integer> comonpentsLevelItem : comonpentsLevelMap.entrySet()){
Integer comonpentId = comonpentsLevelItem.getKey();
Integer comonpentLevel = comonpentsLevelItem.getValue();
Map<Integer, SDifferDemonsComonpentsConfig> sDifferDemonsComonpentsConfigMap = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(comonpentId);
SDifferDemonsComonpentsConfig sDifferDemonsComonpentsConfig = sDifferDemonsComonpentsConfigMap.get(comonpentLevel);
Map<Integer, Map<Integer, Integer>> extraAddMap = sDifferDemonsComonpentsConfig.getExtraAddMap();
if(extraAddMap!=null&&(extraAddMap.containsKey(profession)||extraAddMap.containsKey(0))){
int innerId = extraAddMap.containsKey(0) ? 0 : profession;
Map<Integer, Integer> professionAddMap = extraAddMap.get(innerId);
combinedAttribute(professionAddMap,heroAllAttribute);
}
combinedAttribute(sDifferDemonsComonpentsConfig.getBaseAttribute(),heroAllAttribute);
}
}
//todo 灵兽
// Map<Integer, Pokemon> pokemonMap = pokemonManager.getPokemonMap();
// for(Map.Entry<Integer,Pokemon> item : pokemonMap.entrySet()){
// Pokemon pokemon = item.getValue();
// Map<Integer, Integer> comonpentsLevelMap = pokemon.getComonpentsLevelMap();
// for(Map.Entry<Integer, Integer> comonpentsLevelItem : comonpentsLevelMap.entrySet()){
// Integer comonpentId = comonpentsLevelItem.getKey();
// Integer comonpentLevel = comonpentsLevelItem.getValue();
// Map<Integer, SDifferDemonsComonpentsConfig> sDifferDemonsComonpentsConfigMap = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(comonpentId);
// SDifferDemonsComonpentsConfig sDifferDemonsComonpentsConfig = sDifferDemonsComonpentsConfigMap.get(comonpentLevel);
// Map<Integer, Map<Integer, Integer>> extraAddMap = sDifferDemonsComonpentsConfig.getExtraAddMap();
// if(extraAddMap!=null&&(extraAddMap.containsKey(profession)||extraAddMap.containsKey(0))){
// int innerId = extraAddMap.containsKey(0) ? 0 : profession;
// Map<Integer, Integer> 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<Integer, Pokemon> pokemonMap = pokemonManager.getPokemonMap();
//todo 灵兽
// Map<Integer, Pokemon> pokemonMap = pokemonManager.getPokemonMap();
//
// //TODO 测试
// if(pokemonMap.isEmpty()){
// for(SDifferDemonsConfig sDifferDemonsConfig : SDifferDemonsConfig.sDifferDemonsConfigMap.values() ){
// pokemonManager.addPokemon(new Pokemon(sDifferDemonsConfig.getId()));
// }
// }
// List<CommonProto.PokemonInfo> 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<CommonProto.PokemonInfo> 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<Integer, Integer> comonpentsLevelMap = pokemon.getComonpentsLevelMap();
SDifferDemonsStageConfig sDifferDemonsStageConfig = SDifferDemonsStageConfig.getsDifferDemonsStageConfigMap(pokemonId*100 + pokemon.getAllStage() + 1);
int comonpentPreStage = sDifferDemonsStageConfig.getComonpentPreStage();
boolean isEnough = true;
for(int i=0;i<comonpentList.length;i++){
if(!comonpentsLevelMap.containsKey(comonpentList[i])){
isEnough =false;
break;
}
if(comonpentsLevelMap.get(comonpentList[i]) < comonpentPreStage){
isEnough =false;
break;
}
}
int[][] cost = sDifferDemonsStageConfig.getCost();
if(!isEnough){
throw new ErrorCodeException(ErrorCode.newDefineCode("not tryMatch"));
}
isEnough = ItemUtil.itemCost(user,cost,BIReason.POKEMON_ADVANCE_CONSUME,pokemonId);
if(!isEnough){
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
pokemon.setAllStage(pokemon.getAllStage()+1);
if(pokemon.getAllStage() == 1){
user.getUserMissionManager().onGameEvent(user,GameEvent.POKEMON_ADVANCED,pokemonId);
}
//发送成功消息
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.POKEMON_ADVANCED_RESPONSE_VALUE,null,true);
String message=null;
if(pokemon.getAllStage()==1){
message = SErrorCodeEerverConfig.getI18NMessage("lamp_activate_differ_content_"+sDifferDemonsConfig.getQuality(), new Object[]{user.getPlayerInfoManager().getNickName(),sDifferDemonsConfig.getName() });
}else if(pokemon.getAllStage()>=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<Integer, Integer> comonpentsLevelMap = pokemon.getComonpentsLevelMap();
// SDifferDemonsStageConfig sDifferDemonsStageConfig = SDifferDemonsStageConfig.getsDifferDemonsStageConfigMap(pokemonId*100 + pokemon.getAllStage() + 1);
// int comonpentPreStage = sDifferDemonsStageConfig.getComonpentPreStage();
//
// boolean isEnough = true;
// for(int i=0;i<comonpentList.length;i++){
// if(!comonpentsLevelMap.containsKey(comonpentList[i])){
// isEnough =false;
// break;
// }
// if(comonpentsLevelMap.get(comonpentList[i]) < comonpentPreStage){
// isEnough =false;
// break;
// }
// }
// int[][] cost = sDifferDemonsStageConfig.getCost();
//
// if(!isEnough){
// throw new ErrorCodeException(ErrorCode.newDefineCode("not tryMatch"));
// }
// isEnough = ItemUtil.itemCost(user,cost,BIReason.POKEMON_ADVANCE_CONSUME,pokemonId);
// if(!isEnough){
// throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
// }
//
//
// pokemon.setAllStage(pokemon.getAllStage()+1);
// if(pokemon.getAllStage() == 1){
// user.getUserMissionManager().onGameEvent(user,GameEvent.POKEMON_ADVANCED,pokemonId);
// }
//
// //发送成功消息
// MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.POKEMON_ADVANCED_RESPONSE_VALUE,null,true);
// String message=null;
// if(pokemon.getAllStage()==1){
// message = SErrorCodeEerverConfig.getI18NMessage("lamp_activate_differ_content_"+sDifferDemonsConfig.getQuality(), new Object[]{user.getPlayerInfoManager().getNickName(),sDifferDemonsConfig.getName() });
//
// }else if(pokemon.getAllStage()>=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<Integer,Integer> pokemonAttributeMap = new HashMap<>();
Map<Integer, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
for(Pokemon pokemon : pokemonMap.values()){
combinePokemonAttribute(pokemonAttributeMap, pokemon,false);
}
return calForce(pokemonAttributeMap)*5;
// Map<Integer,Integer> pokemonAttributeMap = new HashMap<>();
// Map<Integer, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
// for(Pokemon pokemon : pokemonMap.values()){
// combinePokemonAttribute(pokemonAttributeMap, pokemon,false);
// }
//
// return calForce(pokemonAttributeMap)*5;
return 0;
}
private void combinePokemonAttribute(Map<Integer, Integer> pokemonAttributeMap, Pokemon pokemon,boolean needExtra) {
Map<Integer, Integer> comonpentsLevelMap = pokemon.getComonpentsLevelMap();
for (Map.Entry<Integer, Integer> comonpentsLevelItem : comonpentsLevelMap.entrySet()) {
Integer comonpentId = comonpentsLevelItem.getKey();
Integer comonpentLevel = comonpentsLevelItem.getValue();
Map<Integer, SDifferDemonsComonpentsConfig> sDifferDemonsComonpentsConfigMap = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(comonpentId);
SDifferDemonsComonpentsConfig sDifferDemonsComonpentsConfig = sDifferDemonsComonpentsConfigMap.get(comonpentLevel);
Map<Integer, Map<Integer, Integer>> extraAddMap = sDifferDemonsComonpentsConfig.getExtraAddMap();
combinedAttribute(sDifferDemonsComonpentsConfig.getBaseAttribute(), pokemonAttributeMap);
if (needExtra && extraAddMap != null) {
for (Map<Integer, Integer> item : extraAddMap.values()) {
combinedAttribute(item, pokemonAttributeMap);
}
}
}
//todo 灵兽
// Map<Integer, Integer> comonpentsLevelMap = pokemon.getComonpentsLevelMap();
// for (Map.Entry<Integer, Integer> comonpentsLevelItem : comonpentsLevelMap.entrySet()) {
// Integer comonpentId = comonpentsLevelItem.getKey();
// Integer comonpentLevel = comonpentsLevelItem.getValue();
// Map<Integer, SDifferDemonsComonpentsConfig> sDifferDemonsComonpentsConfigMap = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(comonpentId);
// SDifferDemonsComonpentsConfig sDifferDemonsComonpentsConfig = sDifferDemonsComonpentsConfigMap.get(comonpentLevel);
// Map<Integer, Map<Integer, Integer>> extraAddMap = sDifferDemonsComonpentsConfig.getExtraAddMap();
// combinedAttribute(sDifferDemonsComonpentsConfig.getBaseAttribute(), pokemonAttributeMap);
//
// if (needExtra && extraAddMap != null) {
// for (Map<Integer, Integer> 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<Integer, Pokemon> 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<Integer, Pokemon> 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);
}

View File

@ -205,6 +205,7 @@ public class ItemLogic {
Map<Integer, Integer> cardMap = new HashMap<>();
Map<Integer,Integer> equipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, Integer> mapRe = ItemUtil.getMapRe(itemId, itemMap, cardMap, equipMap, randomMap);
Map<Integer, Integer> 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<Integer, Integer> baseCardMap = new HashMap<>();
Map<Integer, Integer> baseEquipMap = new HashMap<>();
Map<Integer,Integer> baseRandomMap = new HashMap<>();
ItemMap itemObj = new ItemMap();
for (int[] ints:items) {
Map<Integer, Integer> mapRe = ItemUtil.getMapRe(ints[0], baseItemMap, baseCardMap, baseEquipMap, baseRandomMap);
Map<Integer, Integer> 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<CommonProto.Item> reportMap = drop.getItemlistList();
List<Integer> itemId = new ArrayList<>(reportMap.size());
List<Integer> itemNum = new ArrayList<>(reportMap.size());

View File

@ -529,24 +529,26 @@ public class MissionLoigc {
count = cumulationData.getHeroLevleCountMap().get(missionSubType[0]);
break;
case POKEMON_ADVANCED:{
Map<Integer, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
for(Pokemon pokemon : pokemonMap.values()){
if(pokemon.getAllStage()>0){
count++;
}
}
//todo 灵兽
// Map<Integer, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
// for(Pokemon pokemon : pokemonMap.values()){
// if(pokemon.getAllStage()>0){
// count++;
// }
// }
}
break;
case POKEMON_FORCE:{
int maxForce = 0;
Map<Integer, Pokemon> 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<Integer, Pokemon> 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;

View File

@ -190,17 +190,15 @@ public class CBean2Proto {
public static CommonProto.PokemonInfo getPokemon(Pokemon pokemon) {
Map<Integer, Integer> comonpentsLevelMap = pokemon.getComonpentsLevelMap();
List<CommonProto.Pokemoncomonpent> pokemoncomonpentList = new ArrayList<>();
for( Map.Entry <Integer, Integer> item: comonpentsLevelMap.entrySet()){
Integer comonpentId = item.getKey();
Integer value = item.getValue();
pokemoncomonpentList.add(CommonProto.Pokemoncomonpent.newBuilder().setId(comonpentId).setLevel(value).build());
}
// Map<Integer, Integer> comonpentsLevelMap = pokemon.getComonpentsLevelMap();
// List<CommonProto.Pokemoncomonpent> pokemoncomonpentList = new ArrayList<>();
// for( Map.Entry <Integer, Integer> 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<CommonProto.TechnologyInfo> getTechInfo(Collection<Map<Integer, Integer>> techInfoMap){
List<CommonProto.TechnologyInfo> result = new ArrayList<>(techInfoMap.size());

View File

@ -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<Integer,Integer> specialMonsterMap;
public Map<Integer, Integer> getSpecialMonsterMap() {
return specialMonsterMap;
}
public void setSpecialMonsterMap(Map<Integer, Integer> specialMonsterMap) {
this.specialMonsterMap = specialMonsterMap;
}
public ItemMap() {
this.specialMonsterMap = new HashMap<>();
}
}

View File

@ -78,12 +78,15 @@ public class ItemUtil {
Map<Integer, Integer> cardMap = new HashMap<>();
Map<Integer,Integer> equipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, Integer> cardMap = new HashMap<>();
Map<Integer,Integer> equipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, Integer> cardMap = new HashMap<>();
Map<Integer,Integer> equipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, Integer> cardMap = new HashMap<>();
Map<Integer,Integer> equipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, Integer> cardMap = new HashMap<>();
Map<Integer,Integer> equipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, Integer> cardMap = new HashMap<>();
Map<Integer, Integer> equipMap = new HashMap<>();
Map<Integer, Integer> 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<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap) throws ErrorCodeException{
private static void combineRewardDropGroup(User user, int[] dropGroupIds, float dropRatio, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> 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<Integer, Integer> cardMap = new HashMap<>();
Map<Integer, Integer> equipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, Integer> cardMap = new HashMap<>();
Map<Integer, Integer> equipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, Integer> cardMap = new HashMap<>();
Map<Integer, Integer> equipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, Integer> cardMap = new HashMap<>();
Map<Integer,Integer> equipMap = new HashMap<>();
Map<Integer,Integer> 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<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> 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<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> 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<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap)throws ErrorCodeException{
selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap);
public static void combineReward(int[][] itemArr, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap,ItemMap itemObj)throws ErrorCodeException{
selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap,itemObj);
}
public static void drop(User user,CommonProto.Drop.Builder dropBuilder,Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap,int reason) throws Exception {
public static void drop(User user,CommonProto.Drop.Builder dropBuilder,Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> 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<Integer, Integer> itemMap,Map<Integer, Integer> cardMap,Map<Integer, Integer> equipMap, Map<Integer,Integer> randomMap) {
@ -343,19 +375,19 @@ public class ItemUtil {
}
private static void selectItemArr(int[][] itemArr, Map<Integer, Integer> cardMap, Map<Integer, Integer>
itemMap,Map<Integer,Integer> equipMap,Map<Integer,Integer> randomMap) throws ErrorCodeException{
itemMap,Map<Integer,Integer> equipMap,Map<Integer,Integer> 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(Map<Integer,Integer>itemArr, Map<Integer, Integer> cardMap, Map<Integer, Integer>
itemMap,Map<Integer,Integer> equipMap,Map<Integer,Integer> randomMap) throws ErrorCodeException{
itemMap,Map<Integer,Integer> equipMap,Map<Integer,Integer> randomMap,ItemMap itemObj) throws ErrorCodeException{
for (Map.Entry<Integer,Integer> 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<Integer, Integer> itemMap, Map<Integer, Integer> cardMap,Map<Integer,Integer> equipMap,Map<Integer,Integer> randomMap , float dropRatio)throws ErrorCodeException {
private static void selectDrop(User user, SRewardGroup sRewardGroup,Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap,Map<Integer,Integer> equipMap,Map<Integer,Integer> 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<Integer, Integer> itemMap, Map<Integer, Integer>
cardMap, Map<Integer,Integer> equipMap, Map<Integer,Integer> randomMap, float dropRatio) throws ErrorCodeException {
cardMap, Map<Integer,Integer> equipMap, Map<Integer,Integer> 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<Integer, Integer> itemMap, Map<Integer, Integer> cardMap,
Map<Integer,Integer> equipMap,Map<Integer,Integer> randomMap ,float dropRatio)throws ErrorCodeException {
Map<Integer,Integer> equipMap,Map<Integer,Integer> 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<Integer, Integer> itemMap,Map<Integer, Integer> cardMap,Map<Integer,Integer> equipMap,Map<Integer,Integer> randomMap ,float dropRatio) throws ErrorCodeException{
private static void getMap(User user,int[] itemInfo, Map<Integer, Integer> itemMap,Map<Integer, Integer> cardMap,Map<Integer,Integer> equipMap,Map<Integer,Integer> 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<Integer, Integer> itemMap,
Map<Integer, Integer> cardMap,Map<Integer,Integer> equipMap ,Map<Integer,Integer> randomMap,float dropRatio) throws ErrorCodeException{
Map<Integer, Integer> mapRe = getMapRe(itemId, itemMap, cardMap, equipMap, randomMap);
Map<Integer, Integer> cardMap,Map<Integer,Integer> equipMap ,Map<Integer,Integer> randomMap,ItemMap itemObj,float dropRatio) throws ErrorCodeException{
Map<Integer, Integer> mapRe = getMapRe(itemId, itemMap, cardMap, equipMap, randomMap,itemObj);
putcountMap(itemId,(int)MathUtils.numRount((itemNum * MathUtils.floatToDouble(dropRatio))) , mapRe);
}
public static Map<Integer, Integer> getMapRe(int itemId, Map<Integer, Integer> itemMap,
Map<Integer, Integer> cardMap,Map<Integer,Integer> equipMap ,Map<Integer,Integer> randomMap) throws ErrorCodeException{
Map<Integer, Integer> cardMap,Map<Integer,Integer> equipMap ,Map<Integer,Integer> 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<Integer,Integer> entry:itemObj.getSpecialMonsterMap().entrySet()){
for(int i = 0 ; i <entry.getValue();i++){
Pokemon pokemon = new Pokemon(user.getId(),entry.getKey());
user.getPokemonManager().addPokemon(pokemon);
dropBuilder.addPokemon(CBean2Proto.getPokemon(pokemon));
}
}
}
}

View File

@ -11,7 +11,8 @@ public enum UUIDEnum {
SOUL_EQUIP(7),//魂印
CDK(8),//cdk
EXPEDITION(9),//圣物
JEWEL(10)
JEWEL(10),
SpecialMonster(11),
;
private int value;

View File

@ -1,11 +1,11 @@
#server info
server.id = 20215
server.id = 10153
server.openTime = 20190101000101
server.num = 1
server.debug = true
server.logDir = D:\\jl_logs
server.guildFight = false
server.sendlog37 = true
# redis config
# RedisÊý¾Ý¿âË÷Òý£¨Ä¬ÈÏΪ0£©
spring.redis.database=0
@ -33,7 +33,7 @@ spring.redis.expireTime = -1
#spring.data.mongodb.uri = mongodb://mongouser:ysj#2017#ljsd@111.231.54.96:27017/ysj_wx_1
#spring.data.mongodb2.uri = mongodb://mongouser:ysj#2017#ljsd@111.231.54.96:27017/develop_ysj_wx_1
#mongodb2 develop
spring.data.mongodb.uri = mongodb://60.1.1.14:27017/jieling_20215
spring.data.mongodb.uri = mongodb://60.1.1.14:27017/jieling_10153
spring.data.mongodbcore.uri = mongodb://60.1.1.14:27017/jl_core
#spring.data.mongodb.uri = mongodb://60.1.1.14:27017/jieling_10212
mongodb.options.maxWaitTime = 120000
@ -66,6 +66,7 @@ services.core.ip=60.1.1.153
services.core.port=7900
services.core.area=1000
services.core.id=1
services.core.gmport = 7902
services.core.weight=5

View File

@ -8,7 +8,7 @@ import java.util.*;
public class ExcelUtils {
private static boolean isWrite = true;
private static String excelPath ="D:/excelData/master_develop/base_data/"; //excel 文件
private static String excelPath ="D:/excelData/master_develop/Map_data/"; //excel 文件
// private static String excelPath ="D:/excel/0.94/data_execl/Map_data/"; //excel 文件
private static String path = "conf/server/";
private static Set<String> oldFileNames = new HashSet<>();