法宝重写

master_otnew
PC-202302260912\Administrator 2023-10-19 18:13:49 +08:00
parent 85526fac97
commit c3c9d51e7f
8 changed files with 256 additions and 367 deletions

View File

@ -1,40 +1,30 @@
package com.ljsd;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.handler.GetPlayerInfoHandler;
import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.GuildCrossHandler.BaseCrossHandler;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.thrift.idl.Pokemon;
import com.ljsd.jieling.thrift.idl.PropertyItem;
import com.ljsd.jieling.thrift.idl.PurpleMansionSeal;
import com.ljsd.jieling.thrift.idl.TeamPosHeroInfo;
import com.ljsd.jieling.thrift.idl.*;
import com.ljsd.jieling.util.CBean2Proto;
import com.ljsd.jieling.thrift.idl.CrossArenaManager;
import com.ljsd.jieling.thrift.idl.RPCRequestIFace;
import com.ljsd.jieling.thrift.idl.RechargeResult;
import com.ljsd.jieling.thrift.idl.Result;
import com.ljsd.jieling.util.MessageUtil;
import config.SChangingCard;
import manager.STableManager;
import org.apache.thrift.TException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rpc.protocols.ArenaInfoProto;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.RoomProto;
import util.TimeUtils;
import java.util.*;
import java.util.stream.Collectors;
import java.util.HashMap;
import java.util.Set;
public class CoreService implements RPCRequestIFace.Iface {
private static final Logger LOGGER = LoggerFactory.getLogger(CoreService.class);
@ -88,111 +78,111 @@ public class CoreService implements RPCRequestIFace.Iface {
@Override
public CrossArenaManager getHeroManagerInfo(int uid) {
long start = TimeUtils.now();
try{
// 编队列表
User user = UserManager.getUserNotCache(uid);
if (user == null){
return null;
}
// 编队数据处理
Map<Integer,List<TeamPosHeroInfo>> teams = new HashMap<>();
TeamPosManager teamPosManager = user.getTeamPosManager();
Map<Integer, List<com.ljsd.jieling.logic.dao.TeamPosHeroInfo>> listMap = teamPosManager.getTeamPosForHero();
for (Map.Entry<Integer, List<com.ljsd.jieling.logic.dao.TeamPosHeroInfo>> entry : listMap.entrySet()) {
// 跨服编队
if (TeamEnum.isCrossTeam(entry.getKey())){
List<TeamPosHeroInfo> list = new ArrayList<>();
entry.getValue().forEach(n->list.add(new TeamPosHeroInfo().setHeroId(n.getHeroId()).setPosition(n.getPosition())));
teams.put(entry.getKey(),list);
}
}
// 英雄数据处理
Map<String,ArenaOfHero> heroes = new HashMap<>();
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
for (List<TeamPosHeroInfo> value : teams.values()) {
for (TeamPosHeroInfo info : value) {
Hero hero = heroMap.get(info.getHeroId());
heroes.put(info.getHeroId(),buildArenaOfHero(user,hero,teams));
}
}
// 魂宝灵宝
Map<String,PropertyItem> jewels = new HashMap<>();
Map<String, com.ljsd.jieling.logic.dao.PropertyItem> equipMap = user.getEquipManager().getEquipMap();
for (Hero hero : heroMap.values()) {
for (String info : hero.getJewelInfo()) {
jewels.put(info,buildrprcPropertyItem(equipMap.get(info),user,hero));
}
}
// 编队战力
HashMap<Integer, Long> map = new HashMap<>();
teams.forEach((k,v)->{
long totalForce = teamPosManager.getTeamForce(k);
map.put(k,totalForce);
});
long force1 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId());
long force2 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId());
long force3 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId());
CrossArenaManager rpcArenaManager = new CrossArenaManager();
rpcArenaManager.setTeams(teams);
rpcArenaManager.setHeros(heroes);
rpcArenaManager.setJewels(jewels);
rpcArenaManager.setTotalForceByTeam(map);
rpcArenaManager.setTotalForce(force1+force2+force3);
// 紫府神印
Map<Integer,PurpleMansionSeal> rpdSealMap = new HashMap<>();
Map<Integer, com.ljsd.jieling.logic.dao.PurpleMansionSeal> sealMap= user.getHeroManager().getPurpleMansionSeal();
sealMap.forEach((m,n)->{
PurpleMansionSeal reseal = new PurpleMansionSeal().setSealId(n.getSealId()).setType(n.getType()).setSubId(n.getSubId()).setState(n.getState());
rpdSealMap.put(m,reseal);
});
rpcArenaManager.setSeals(rpdSealMap);
// 灵兽
Map<String, com.ljsd.jieling.logic.dao.Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
Map<String,Pokemon> pokemonMapRpc = new HashMap<>();
pokemonMap.forEach((n,m)->{
Pokemon rpcPokemon = new Pokemon().setTmpId(m.getTmpId()).setId(m.getId()).setLevel(m.getLevel()).setStar(m.getStar());
pokemonMapRpc.put(n,rpcPokemon);
});
rpcArenaManager.setPokemons(pokemonMapRpc);
Map<Integer, String> teamMap = user.getPokemonManager().getPokemonTeamMap();
rpcArenaManager.setPokemonTeamMap(teamMap);
rpcArenaManager.setGuildSkill(new HashMap<>(user.getGuildMyInfo().getGuildSkill()));
//坐骑技能
rpcArenaManager.setSkill(Arrays.asList(user.getPlayerInfoManager().getUserMountValidTime().keySet().toArray(new Integer[0])));
rpcArenaManager.setFourSpirit(user.getPlayerInfoManager().getFourChallengeTotal());
///修行技能数据
rpcArenaManager.setPracticeSkillMap(user.getHeroManager().getPracticeSkillMap());
rpcArenaManager.setFaBaoGongMingSkillMap(user.getHeroManager().getFaBaoGongMingSkillMap());
rpcArenaManager.setMaxHistoryForce(user.getPlayerInfoManager().getMaxForce());
// 身外化身数据
List<Integer> list = new ArrayList<>();
user.getHeroManager().getTransformationList().values().stream().filter(v -> v.getStatus() == 1).forEach(n->{
Map<Integer, SChangingCard> cardMap = STableManager.getConfig(SChangingCard.class);
SChangingCard changingCard = cardMap.get(n.getCardId());
if(changingCard!= null){
if(changingCard.getSkill().length >= n.getStar()+1){
list.add(changingCard.getSkill()[n.getStar()]);
}
}
});
rpcArenaManager.setTfInfoList(list);
//四象心法数据
rpcArenaManager.setSixiangInfos(sixiangData2RpcData(user));
//命格
rpcArenaManager.setLifeGridInfos(getUserMinggeList(user));
//玩家坐骑信息
rpcArenaManager.setUserMountValidTime(getUserMountList(user));
//身外化身
rpcArenaManager.setTransformationList(getTransformationInfoList(user));
LOGGER.info("跨服,获取玩家英雄信息耗时:{}ms",TimeUtils.now()-start);
return rpcArenaManager;
}catch (Exception e){
LOGGER.error("跨服获取玩家英雄信息报错uid:{},error:{}",uid,e.getMessage());
}
// long start = TimeUtils.now();
// try{
// // 编队列表
// User user = UserManager.getUserNotCache(uid);
// if (user == null){
// return null;
// }
// // 编队数据处理
// Map<Integer,List<TeamPosHeroInfo>> teams = new HashMap<>();
// TeamPosManager teamPosManager = user.getTeamPosManager();
// Map<Integer, List<com.ljsd.jieling.logic.dao.TeamPosHeroInfo>> listMap = teamPosManager.getTeamPosForHero();
// for (Map.Entry<Integer, List<com.ljsd.jieling.logic.dao.TeamPosHeroInfo>> entry : listMap.entrySet()) {
// // 跨服编队
// if (TeamEnum.isCrossTeam(entry.getKey())){
// List<TeamPosHeroInfo> list = new ArrayList<>();
// entry.getValue().forEach(n->list.add(new TeamPosHeroInfo().setHeroId(n.getHeroId()).setPosition(n.getPosition())));
// teams.put(entry.getKey(),list);
// }
// }
// // 英雄数据处理
// Map<String,ArenaOfHero> heroes = new HashMap<>();
// Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
// for (List<TeamPosHeroInfo> value : teams.values()) {
// for (TeamPosHeroInfo info : value) {
// Hero hero = heroMap.get(info.getHeroId());
// heroes.put(info.getHeroId(),buildArenaOfHero(user,hero,teams));
// }
// }
// // 魂宝灵宝
// Map<String,PropertyItem> jewels = new HashMap<>();
// Map<String, com.ljsd.jieling.logic.dao.PropertyItem> equipMap = user.getEquipManager().getEquipMap();
// for (Hero hero : heroMap.values()) {
// for (String info : hero.getJewelInfo()) {
// jewels.put(info,buildrprcPropertyItem(equipMap.get(info),user,hero));
// }
// }
// // 编队战力
// HashMap<Integer, Long> map = new HashMap<>();
// teams.forEach((k,v)->{
// long totalForce = teamPosManager.getTeamForce(k);
// map.put(k,totalForce);
// });
// long force1 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId());
// long force2 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId());
// long force3 = teamPosManager.getTeamForce(TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId());
// CrossArenaManager rpcArenaManager = new CrossArenaManager();
// rpcArenaManager.setTeams(teams);
// rpcArenaManager.setHeros(heroes);
// rpcArenaManager.setJewels(jewels);
// rpcArenaManager.setTotalForceByTeam(map);
// rpcArenaManager.setTotalForce(force1+force2+force3);
//
// // 紫府神印
// Map<Integer,PurpleMansionSeal> rpdSealMap = new HashMap<>();
// Map<Integer, com.ljsd.jieling.logic.dao.PurpleMansionSeal> sealMap= user.getHeroManager().getPurpleMansionSeal();
// sealMap.forEach((m,n)->{
// PurpleMansionSeal reseal = new PurpleMansionSeal().setSealId(n.getSealId()).setType(n.getType()).setSubId(n.getSubId()).setState(n.getState());
// rpdSealMap.put(m,reseal);
// });
// rpcArenaManager.setSeals(rpdSealMap);
//
// // 灵兽
// Map<String, com.ljsd.jieling.logic.dao.Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
// Map<String,Pokemon> pokemonMapRpc = new HashMap<>();
// pokemonMap.forEach((n,m)->{
// Pokemon rpcPokemon = new Pokemon().setTmpId(m.getTmpId()).setId(m.getId()).setLevel(m.getLevel()).setStar(m.getStar());
// pokemonMapRpc.put(n,rpcPokemon);
// });
// rpcArenaManager.setPokemons(pokemonMapRpc);
//
// Map<Integer, String> teamMap = user.getPokemonManager().getPokemonTeamMap();
// rpcArenaManager.setPokemonTeamMap(teamMap);
// rpcArenaManager.setGuildSkill(new HashMap<>(user.getGuildMyInfo().getGuildSkill()));
// //坐骑技能
// rpcArenaManager.setSkill(Arrays.asList(user.getPlayerInfoManager().getUserMountValidTime().keySet().toArray(new Integer[0])));
// rpcArenaManager.setFourSpirit(user.getPlayerInfoManager().getFourChallengeTotal());
// ///修行技能数据
// rpcArenaManager.setPracticeSkillMap(user.getHeroManager().getPracticeSkillMap());
// rpcArenaManager.setFaBaoGongMingSkillMap(user.getHeroManager().getFaBaoGongMingSkillMap());
// rpcArenaManager.setMaxHistoryForce(user.getPlayerInfoManager().getMaxForce());
// // 身外化身数据
// List<Integer> list = new ArrayList<>();
// user.getHeroManager().getTransformationList().values().stream().filter(v -> v.getStatus() == 1).forEach(n->{
// Map<Integer, SChangingCard> cardMap = STableManager.getConfig(SChangingCard.class);
// SChangingCard changingCard = cardMap.get(n.getCardId());
// if(changingCard!= null){
// if(changingCard.getSkill().length >= n.getStar()+1){
// list.add(changingCard.getSkill()[n.getStar()]);
// }
// }
// });
// rpcArenaManager.setTfInfoList(list);
// //四象心法数据
// rpcArenaManager.setSixiangInfos(sixiangData2RpcData(user));
// //命格
// rpcArenaManager.setLifeGridInfos(getUserMinggeList(user));
// //玩家坐骑信息
// rpcArenaManager.setUserMountValidTime(getUserMountList(user));
// //身外化身
// rpcArenaManager.setTransformationList(getTransformationInfoList(user));
// LOGGER.info("跨服,获取玩家英雄信息耗时:{}ms",TimeUtils.now()-start);
// return rpcArenaManager;
// }catch (Exception e){
// LOGGER.error("跨服获取玩家英雄信息报错uid:{},error:{}",uid,e.getMessage());
// }
return null;
}
@ -200,70 +190,70 @@ public class CoreService implements RPCRequestIFace.Iface {
/**
*
*/
public static List<TransformationCardInfo> getTransformationInfoList(User user){
List<TransformationCardInfo> list = new ArrayList<>();
for (TransformationInfo value : user.getHeroManager().getTransformationList().values().stream().filter(v -> v.getStatus() == 1).collect(Collectors.toList())) {
TransformationCardInfo builder = new TransformationCardInfo();
builder.setId(value.getCardId());
builder.setIndex(value.getIndex());
builder.setStatus(value.getStatus());
builder.setLevel(value.getLevel());
builder.setStar(value.getStar());
list.add(builder);
}
return list;
}
// public static List<TransformationCardInfo> getTransformationInfoList(User user){
// List<TransformationCardInfo> list = new ArrayList<>();
// for (TransformationInfo value : user.getHeroManager().getTransformationList().values().stream().filter(v -> v.getStatus() == 1).collect(Collectors.toList())) {
// TransformationCardInfo builder = new TransformationCardInfo();
// builder.setId(value.getCardId());
// builder.setIndex(value.getIndex());
// builder.setStatus(value.getStatus());
// builder.setLevel(value.getLevel());
// builder.setStar(value.getStar());
// list.add(builder);
// }
// return list;
// }
/**
*
*/
public static List<com.ljsd.jieling.thrift.idl.LifeGridInfo> getUserMinggeList(User user) {
List<CommonProto.LifeGridInfo> data = GetPlayerInfoHandler.getLifeGridInfos(user.getHeroManager());
List<LifeGridInfo>rpcData = new ArrayList<>();
for(CommonProto.LifeGridInfo perData:data){
LifeGridInfo perRpcData = new LifeGridInfo();
perRpcData.setGridId(perData.getGridId());
perRpcData.setGridIndex(perData.getGridIndex());
perRpcData.setItemId(perData.getItemId());
rpcData.add(perRpcData);
}
return rpcData;
}
// public static List<com.ljsd.jieling.thrift.idl.LifeGridInfo> getUserMinggeList(User user) {
// List<CommonProto.LifeGridInfo> data = GetPlayerInfoHandler.getLifeGridInfos(user.getHeroManager());
// List<LifeGridInfo>rpcData = new ArrayList<>();
// for(CommonProto.LifeGridInfo perData:data){
// LifeGridInfo perRpcData = new LifeGridInfo();
// perRpcData.setGridId(perData.getGridId());
// perRpcData.setGridIndex(perData.getGridIndex());
// perRpcData.setItemId(perData.getItemId());
// rpcData.add(perRpcData);
// }
// return rpcData;
// }
/**
*
*/
public static List<com.ljsd.jieling.thrift.idl.UserMountInfo> getUserMountList(User user) {
List<CommonProto.UserMountInfo> data = CBean2Proto.getUserMountList(user);
List<UserMountInfo>rpcData = new ArrayList<>();
for(CommonProto.UserMountInfo perData :data){
UserMountInfo rpc = new UserMountInfo();
rpc.setMountId(perData.getMountId());
rpc.setOverTime(perData.getOverTime());
rpcData.add(rpc);
}
return rpcData;
}
// public static List<com.ljsd.jieling.thrift.idl.UserMountInfo> getUserMountList(User user) {
// List<CommonProto.UserMountInfo> data = CBean2Proto.getUserMountList(user);
// List<UserMountInfo>rpcData = new ArrayList<>();
// for(CommonProto.UserMountInfo perData :data){
// UserMountInfo rpc = new UserMountInfo();
// rpc.setMountId(perData.getMountId());
// rpc.setOverTime(perData.getOverTime());
// rpcData.add(rpc);
// }
// return rpcData;
// }
//四象心法数据转换
public static List<com.ljsd.jieling.thrift.idl.SixiangxinfaInfo> sixiangData2RpcData(User user){
List<CommonProto.SixiangxinfaInfo> sixiangxinfaInfo = GetPlayerInfoHandler.getSixiangxinfaInfos(user.getHeroManager());
List<SixiangxinfaInfo> rpcInfo = new ArrayList<>();
for(CommonProto.SixiangxinfaInfo data:sixiangxinfaInfo){
SixiangxinfaInfo perRpcInfo = new SixiangxinfaInfo();
perRpcInfo.setProfessionId(data.getProfessionId());
perRpcInfo.setLevel(data.getLevel());
for(CommonProto.SixiangxinfaPropertyInfo property:data.getPropertyInfoListList()){
SixiangxinfaPropertyInfo rpcSixiangxinfaPropertyInfo = new SixiangxinfaPropertyInfo();
rpcSixiangxinfaPropertyInfo.setPropertyId(property.getPropertyId());
rpcSixiangxinfaPropertyInfo.setPropertyNum(property.getPropertyNum());
perRpcInfo.addToPropertyInfoList(rpcSixiangxinfaPropertyInfo);
}
rpcInfo.add(perRpcInfo);
}
return rpcInfo;
}
// public static List<com.ljsd.jieling.thrift.idl.SixiangxinfaInfo> sixiangData2RpcData(User user){
// List<CommonProto.SixiangxinfaInfo> sixiangxinfaInfo = GetPlayerInfoHandler.getSixiangxinfaInfos(user.getHeroManager());
// List<SixiangxinfaInfo> rpcInfo = new ArrayList<>();
// for(CommonProto.SixiangxinfaInfo data:sixiangxinfaInfo){
// SixiangxinfaInfo perRpcInfo = new SixiangxinfaInfo();
// perRpcInfo.setProfessionId(data.getProfessionId());
// perRpcInfo.setLevel(data.getLevel());
// for(CommonProto.SixiangxinfaPropertyInfo property:data.getPropertyInfoListList()){
// SixiangxinfaPropertyInfo rpcSixiangxinfaPropertyInfo = new SixiangxinfaPropertyInfo();
// rpcSixiangxinfaPropertyInfo.setPropertyId(property.getPropertyId());
// rpcSixiangxinfaPropertyInfo.setPropertyNum(property.getPropertyNum());
// perRpcInfo.addToPropertyInfoList(rpcSixiangxinfaPropertyInfo);
// }
// rpcInfo.add(perRpcInfo);
// }
// return rpcInfo;
// }
@Override
public boolean sendCrossLingmaiHongdian(int uid){
ISession sess = OnlineUserManager.sessionMap.get(uid);
@ -274,68 +264,67 @@ public class CoreService implements RPCRequestIFace.Iface {
return false;
}
private PropertyItem buildrprcPropertyItem(com.ljsd.jieling.logic.dao.PropertyItem propertyItem,User user,Hero hero){
PropertyItem rpcPropertyItem = new PropertyItem();
rpcPropertyItem.setId(propertyItem.getId());
rpcPropertyItem.setEquipId(propertyItem.getEquipId());
rpcPropertyItem.setHeroId(propertyItem.getHeroId());
rpcPropertyItem.setRebuildLevel(propertyItem.getBuildLevel());
rpcPropertyItem.setLevel(propertyItem.getLevel());
return rpcPropertyItem;
}
// private PropertyItem buildrprcPropertyItem(com.ljsd.jieling.logic.dao.PropertyItem propertyItem,User user,Hero hero){
// PropertyItem rpcPropertyItem = new PropertyItem();
// rpcPropertyItem.setId(propertyItem.getId());
// rpcPropertyItem.setEquipId(propertyItem.getEquipId());
// rpcPropertyItem.setHeroId(propertyItem.getHeroId());
// rpcPropertyItem.setRebuildLevel(propertyItem.getBuildLevel());
// rpcPropertyItem.setLevel(propertyItem.getLevel());
// return rpcPropertyItem;
// }
private ArenaOfHero buildArenaOfHero(User user,Hero hero, Map<Integer,List<TeamPosHeroInfo>> teamMap){
HeroManager heroManager = user.getHeroManager();
ArenaOfHero arenaOfHero = new ArenaOfHero();
arenaOfHero.setId(hero.getId());
arenaOfHero.setTemplateId(hero.getTemplateId());
arenaOfHero.setLevel(hero.getLevel(heroManager));
arenaOfHero.setStar(hero.getStar());
arenaOfHero.setEquipByPositionMap(new HashMap<>(hero.getEquipByPositionMap()));
arenaOfHero.setSoulEquipByPositionMap(new HashMap<>(hero.getSoulEquipByPositionMap()));
arenaOfHero.setGodSealByPositionMap(new HashMap<>(hero.getGodSealByPositionMap()));
arenaOfHero.setBreakId(hero.getBreakIdByHongMeng(heroManager));
arenaOfHero.setStarBreakId(hero.getStarBreakId());
arenaOfHero.setCreateTime(hero.getCreateTime());
// todo 法宝重写
arenaOfHero.setEspecialEquipLevel(0);
arenaOfHero.setJewelInfo(new HashSet<>(hero.getJewelInfo()));
arenaOfHero.setCreateTime(hero.getCreateType());
arenaOfHero.setChangeId(hero.getChangeId());
arenaOfHero.setSkin(hero.getSkin());
arenaOfHero.setGodSoulLv(hero.getGodSoulLv());
arenaOfHero.setEquipAdvanceLv(hero.getEquipAdvanceLv());
// 摘星阁装备强化
for (HeroEquipStrong strong : hero.getEquipStrongMap().values()) {
equipStrongInfo strongInfo = new equipStrongInfo();
strongInfo.setPosition(strong.getPosition());
strongInfo.setStrongLv(strong.getStrongLv());
arenaOfHero.putToEquipStrongMap(strongInfo.getPosition(),strongInfo);
}
arenaOfHero.setPropertyId(hero.getPropertyId());
for (Map.Entry<Integer, List<TeamPosHeroInfo>> entry : teamMap.entrySet()) {
Integer teamId = entry.getKey();
List<TeamPosHeroInfo> teamList = entry.getValue();
List<TeamPosHeroInfo> collect = teamList.stream().filter(v -> v.getHeroId().equals(hero.getId())).collect(Collectors.toList());
if (collect.isEmpty()){
continue;
}
Map<Integer, Long> attributeShow;
attributeShow = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, true, teamId);
if(arenaOfHero.getAttributeMapByTeam() == null){
arenaOfHero.setAttributeMapByTeam(new HashMap<>());
}
arenaOfHero.getAttributeMapByTeam().put(teamId,attributeShow);
Map<Integer, Long> attributeBattle;
attributeBattle = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId);
if(arenaOfHero.getAttributeMapByTeamBattle() == null){
arenaOfHero.setAttributeMapByTeamBattle(new HashMap<>());
}
arenaOfHero.getAttributeMapByTeamBattle().put(teamId,attributeBattle);
}
return arenaOfHero;
}
// private ArenaOfHero buildArenaOfHero(User user,Hero hero, Map<Integer,List<TeamPosHeroInfo>> teamMap){
// HeroManager heroManager = user.getHeroManager();
// ArenaOfHero arenaOfHero = new ArenaOfHero();
// arenaOfHero.setId(hero.getId());
// arenaOfHero.setTemplateId(hero.getTemplateId());
// arenaOfHero.setLevel(hero.getLevel(heroManager));
// arenaOfHero.setStar(hero.getStar());
// arenaOfHero.setEquipByPositionMap(new HashMap<>(hero.getEquipByPositionMap()));
// arenaOfHero.setSoulEquipByPositionMap(new HashMap<>(hero.getSoulEquipByPositionMap()));
// arenaOfHero.setGodSealByPositionMap(new HashMap<>(hero.getGodSealByPositionMap()));
// arenaOfHero.setBreakId(hero.getBreakIdByHongMeng(heroManager));
// arenaOfHero.setStarBreakId(hero.getStarBreakId());
// arenaOfHero.setCreateTime(hero.getCreateTime());
// arenaOfHero.setEspecialEquipLevel(0);
// arenaOfHero.setJewelInfo(new HashSet<>(hero.getJewelInfo()));
// arenaOfHero.setCreateTime(hero.getCreateType());
// arenaOfHero.setChangeId(hero.getChangeId());
// arenaOfHero.setSkin(hero.getSkin());
// arenaOfHero.setGodSoulLv(hero.getGodSoulLv());
// arenaOfHero.setEquipAdvanceLv(hero.getEquipAdvanceLv());
// // 摘星阁装备强化
// for (HeroEquipStrong strong : hero.getEquipStrongMap().values()) {
// equipStrongInfo strongInfo = new equipStrongInfo();
// strongInfo.setPosition(strong.getPosition());
// strongInfo.setStrongLv(strong.getStrongLv());
// arenaOfHero.putToEquipStrongMap(strongInfo.getPosition(),strongInfo);
// }
// arenaOfHero.setPropertyId(hero.getPropertyId());
// for (Map.Entry<Integer, List<TeamPosHeroInfo>> entry : teamMap.entrySet()) {
// Integer teamId = entry.getKey();
// List<TeamPosHeroInfo> teamList = entry.getValue();
// List<TeamPosHeroInfo> collect = teamList.stream().filter(v -> v.getHeroId().equals(hero.getId())).collect(Collectors.toList());
// if (collect.isEmpty()){
// continue;
// }
// Map<Integer, Long> attributeShow;
// attributeShow = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, true, teamId);
// if(arenaOfHero.getAttributeMapByTeam() == null){
// arenaOfHero.setAttributeMapByTeam(new HashMap<>());
// }
// arenaOfHero.getAttributeMapByTeam().put(teamId,attributeShow);
//
// Map<Integer, Long> attributeBattle;
// attributeBattle = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId);
// if(arenaOfHero.getAttributeMapByTeamBattle() == null){
// arenaOfHero.setAttributeMapByTeamBattle(new HashMap<>());
// }
// arenaOfHero.getAttributeMapByTeamBattle().put(teamId,attributeBattle);
// }
// return arenaOfHero;
// }
@Override
public boolean isContaintSensitiveWord(String txt, int matchType) throws TException {

View File

@ -4,11 +4,10 @@ import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.hero.HongMengFunctionEnum;
import com.ljsd.jieling.logic.item.ItemLogic;
import com.ljsd.jieling.network.session.ISession;
import org.springframework.stereotype.Component;
import rpc.protocols.HeroInfoProto;
import rpc.protocols.MessageTypeProto;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@ -51,13 +50,6 @@ public class UpHeroStarHandler extends BaseHandler<HeroInfoProto.UpHeroStarReque
}
}
HeroLogic.getInstance().upHeroStar(iSession,heroId,consumeMaterialsList);
}else{
// 验证是否可以使用功能,法宝强化
boolean useFunction = HeroLogic.getInstance().isUseFunction(iSession.getUid(), HongMengFunctionEnum.MIRACLE_WEAPON_INTENSIFY.getPropertyId(), heroId);
if (!useFunction){
throw new ErrorCodeException(ErrorCode.HONGMENG_ING);
}
ItemLogic.getInstance().especialEquipUpStar(iSession,heroId);
}
}
}

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.help;
import com.ljsd.jieling.logic.dao.Baubles;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.PropertyItem;
@ -41,11 +42,6 @@ public class HelpHero {
*
*/
private List<PropertyItem> jewels;
/**
*
* todo 20220902 redis
*/
private int treeLevel;
/**
*
*/
@ -58,6 +54,8 @@ public class HelpHero {
private List<PropertyItem> faxiangs = new ArrayList<>();
private Baubles baubles;
public int getUid() {
return uid;
}
@ -129,4 +127,12 @@ public class HelpHero {
public void setFaxiangs(List<PropertyItem> faxiangs) {
this.faxiangs = faxiangs;
}
public Baubles getBaubles() {
return baubles;
}
public void setBaubles(Baubles baubles) {
this.baubles = baubles;
}
}

View File

@ -4229,8 +4229,6 @@ public class HeroLogic {
* @throws Exception
*/
public void especialEquipBack(ISession session, List<String> heroIdList) throws Exception {
User user = UserManager.getUser(session.getUid());
// todo 法宝归元重写
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.ESPECIAL_EQUIP_BACK_RESPONSE_VALUE, null, true);
}
@ -4365,16 +4363,6 @@ public class HeroLogic {
for (int[] ints : levelReturn) {
returnItemMap.put(ints[0], returnItemMap.getOrDefault(ints[0], 0) + ints[1]);
}
if (!isAddEspecial) {
continue;
}
//返还法宝修炼材料
Map<Integer, Integer> especialEquipReturnItem = ItemLogic.getInstance().heroEspecialEquipReturnItem(hero);
if (especialEquipReturnItem != null && !especialEquipReturnItem.isEmpty()) {
for (Map.Entry<Integer, Integer> entry : especialEquipReturnItem.entrySet()) {
returnItemMap.put(entry.getKey(), returnItemMap.getOrDefault(entry.getKey(), 0) + entry.getValue());
}
}
}
int[][] resultDrop = new int[returnItemMap.size()][];
int index = 0;
@ -6380,7 +6368,7 @@ public class HeroLogic {
List<Integer> skillList = new ArrayList<>();
SCHero tempHero = SCHero.getsCHero().get(hero.getTemplateId());
//英雄技能取统一的玉虚配置英雄
List<Integer> skillListByStar = tempHero.getSkillListByStar(yuxuHero.getStar());
List<Integer > skillListByStar = tempHero.getSkillListByStar(yuxuHero.getStar());
if (skillListByStar != null) {
skillList.addAll(skillListByStar);
}
@ -6411,7 +6399,7 @@ public class HeroLogic {
Map<Integer, Integer> godSealByPositionMap = yuxuHero.getGodSealByPositionMap();
godSealByPositionMap.values().forEach(e -> Arrays.stream(config.get(e).getPassiveSkill()).forEach(skillList::add));
//法宝技能继承真实技能 todo 玉虚法宝处理
//法宝技能继承真实技能 todo 玉虚法宝重写
int[] equipTalismana = tempHero.getEquipTalismana();
return skillList;

View File

@ -570,12 +570,6 @@ public class ItemLogic {
baseItemMap.put(item[0], baseItemMap.getOrDefault(item[0], 0L) + item[1]);
}
//法宝获得
Map<Integer, Integer> especialReturn = heroEspecialEquipReturnItem(hero);
if (especialReturn != null) {
especialReturn.forEach((k, v) -> baseItemMap.put(k, baseItemMap.getOrDefault(k, 0L) + v));
}
// 潜能
HeroLogic.getInstance().potentialBackDrop(hero, baseItemMap);
}
@ -600,28 +594,6 @@ public class ItemLogic {
ItemLogic.sendUseAndPriceItemMessage(iSession, MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE, drop);
}
/**
*
* todo
*/
public Map<Integer, Integer> heroEspecialEquipReturnItem(Hero hero) {
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
int[] equipTalismana = scHero.getEquipTalismana();
if (equipTalismana == null || equipTalismana.length < 2) {
return null;
}
Map<Integer, Integer> baseItemMap = new HashMap<>();
TreeMap<Integer, SEquipTalismana> levelMap = (TreeMap<Integer, SEquipTalismana>) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1]));
Map<Integer, SEquipTalismana> returnMap = levelMap.subMap(1, 0);
for (Map.Entry<Integer, SEquipTalismana> entry : returnMap.entrySet()) {
int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial();
for (int[] rankUpConsume : rankupBasicMaterial) {
baseItemMap.put(rankUpConsume[0], baseItemMap.getOrDefault(rankUpConsume[0], 0) + rankUpConsume[1]);
}
}
return baseItemMap;
}
/**
*
*
@ -701,7 +673,7 @@ public class ItemLogic {
}
PlayerInfoProto.RefreshItemNumResponse.Builder builder = PlayerInfoProto.RefreshItemNumResponse.newBuilder();
List<CommonProto.ItemInfo> itemInfos = new ArrayList<>();
if (itemList.size() != 0) {
if (!itemList.isEmpty()) {
for (Item item : itemList) {
itemInfos.add(CBean2Proto.getItemInfo(item));
}
@ -710,59 +682,6 @@ public class ItemLogic {
MessageUtil.sendMessage(iSession, 1, msgId, builder.build(), true);
}
/**
* todo
*/
public void especialEquipUpStar(ISession session, String heroId) throws Exception {
User user = UserManager.getUser(session.getUid());
Hero hero = user.getHeroManager().getHero(heroId);
if (hero == null) {
throw new ErrorCodeException(ErrorCode.newDefineCode("当前法宝不存在"));
}
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
if (scHero.getEquipTalismana() == null && hero.getStar() < scHero.getEquipTalismana()[0]) {
throw new ErrorCodeException(ErrorCode.newDefineCode("当前英雄无法升级法宝"));
}
int especialEquipId = scHero.getEquipTalismana()[1];
int maxLimit = SSpecialConfig.getIntegerValue(SSpecialConfig.EquipTalismanaUpperLimit);
// if (hero.getEspecialEquipLevel() >= maxLimit){
// throw new ErrorCodeException(ErrorCode.newDefineCode("法宝已最大限制等级"));
// }
// SEquipTalismana sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquipId).get(hero.getEspecialEquipLevel());
// if (sEquipTalismana == null || sEquipTalismana.getRankupBasicMaterial() == null|| sEquipTalismana.getRankupBasicMaterial().length==0) {
// throw new ErrorCodeException(ErrorCode.newDefineCode("法宝已最大等级"));
// }
// boolean check = ItemUtil.itemCost(user, sEquipTalismana.getRankupBasicMaterial(), BIReason.ESPECIAL_EQUIP_UP_LEVEL_CONSUME, 1);
// if (!check){
// throw new ErrorCodeException(ErrorCode.ITEM_ESPECIAL_EQUIP_UP_ITEM_NOT);
// }
// hero.updateEspecial(hero.getEspecialEquipLevel() + 1);
// Poster.getPoster().dispatchEvent(new EspecialEquipUpEvent(user.getId(), especialEquipId, hero.getEspecialEquipLevel()));
// user.getUserMissionManager().onGameEvent(user, GameEvent.ESPECIAL_EQUIP, hero.getEspecialEquipLevel(), heroId);
// MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE, null, true);
// int[] value = SSpecialConfig.getOnceArrayValue(SSpecialConfig.lamp_rankup_equiptalisman_content_parm);
// if (hero.getEspecialEquipLevel() >= value[0]) {
// SItem sItem = SItem.getsItemMap().get(especialEquipId);
// if (sItem.getQuantity() < 5) {
// return;
// }
// // 每5级发送一次公告
// if (hero.getEspecialEquipLevel() % value[1] != 0) {
// return;
// }
// String nameColor = user.getPlayerInfoManager().getNameColor();
// String message = SErrorCodeEerverConfig.getI18NMessageNeedConvert("lamp_rankup_equiptalisman_content",
// new Object[]{nameColor, user.getPlayerInfoManager().getNickName(), sItem.getName(), hero.getEspecialEquipLevel()},
// new int[]{0,0,1,0});
// ChatLogic.getInstance().sendSysChatMessage(message, Global.DILIGENT, String.valueOf(sItem.getId()), 0, 0, 0, 0, 0);
// }
// 更新战力
Poster.getPoster().dispatchEvent(new SaveHeroForceEvent(user.getId(),heroId));
//鸿蒙阵
HeroLogic.getInstance().addOrUpdateHongmeng(session);
}
public void addItemLog(ItemLog itemLog) {
ItemLogUtil.addLogQueue(itemLog);
}

View File

@ -1,8 +1,6 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.MissionType;
@ -28,27 +26,24 @@ public class UpJewlDataManager extends AbstractDataManager{
@Override
public boolean isFinish(User user,CumulationData data, int[][] cfgValue, Object... parm) {
// if(parm.length==1&&(int)parm[0]!=6){
// return false;
// }
// if(parm.length==2&&(int)parm[0]!=cfgValue[1][0]){
// return false;
// }
if( data.jewl_all_leve==cfgValue[1][0]){
if(data.jewl_all_leve==cfgValue[1][0]){
return true;
}
for (Map.Entry<Integer, List<TeamPosHeroInfo>> entry:user.getTeamPosManager().getTeamPosForHero().entrySet()){
Map<Integer, List<TeamPosHeroInfo>> teamPosForHero = user.getTeamPosManager().getTeamPosForHero();
HeroManager heroManager = user.getHeroManager();
EquipManager equipManager = user.getEquipManager();
for (Map.Entry<Integer, List<TeamPosHeroInfo>> entry:teamPosForHero.entrySet()){
List<TeamPosHeroInfo> teamPosHeroInfos =entry.getValue();
if(teamPosHeroInfos.size()!=6){
continue;
}
boolean isAll =true;
for (TeamPosHeroInfo info:teamPosHeroInfos){
Hero hero = user.getHeroManager().getHero(info.getHeroId());
// todo 法宝重写
// if(hero.getEspecialEquipLevel() < cfgValue[1][0]){
// isAll = false;
// }
Hero hero = heroManager.getHero(info.getHeroId());
Baubles baubles = equipManager.getBaubles(hero.getBauBlesId());
if (baubles != null && baubles.getLevel() < cfgValue[1][0]){
isAll = false;
}
}
if(isAll){
data.jewl_all_leve=cfgValue[1][0];

View File

@ -1387,7 +1387,7 @@ public class PlayerLogic {
builder.addSpecialEffects(CommonProto.SpecialEffects.newBuilder().setPropertyId(item.getKey()).setPropertyValue(item.getValue().intValue()).build());
}
builder.setForce(HeroLogic.getInstance().calForce(heroAttributeMap));
builder.setHero(CBean2Proto.getYuxuHero(yuxuHero,hero));
builder.setHero(CBean2Proto.getYuxuHero(yuxuHero));
//公会等级统一为0
builder.setGuildSkill(0);
return builder.build();

View File

@ -283,7 +283,6 @@ public class CBean2Proto {
/**
* heroredis
* redis
* todo
*/
public static HelpHero heroToHelpHero(User user,Hero hero) throws Exception {
// 获取神将类型
@ -306,6 +305,7 @@ public class CBean2Proto {
helpHero.setJewels(jewels);
helpHero.setFaxiangs(faxiangs);
helpHero.setFourTotalTier(user.getPlayerInfoManager().getFourChallengeTotal());
helpHero.setBaubles(equipManager.getBaubles(hero.getBauBlesId()));
return helpHero;
}
@ -1202,13 +1202,13 @@ public class CBean2Proto {
/***
*
*/
public static CommonProto.Hero getYuxuHero(Hero yuxuHero,Hero hero){
public static CommonProto.Hero getYuxuHero(Hero yuxuHero){
CommonProto.Hero hero1 = getHero(yuxuHero);
CommonProto.Hero.Builder builder = hero1.toBuilder();
builder.setLevel(yuxuHero.getYuXuLevel());
builder.setBreakId(yuxuHero.getBreakId());
builder.setStarBreakId(yuxuHero.getStarBreakId());
//显示真实的法宝等级 todo 法宝重写
builder.setBaublesId(yuxuHero.getBauBlesId());
return builder.build();
}