diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index dee57cc97..a4c9c9528 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -220,7 +220,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ .setDailyredpack(playerInfoManager.getDailyWelfareRedPacket()) .setRandomCount(randomCount) .addAllDrawTimes(CBean2Proto.getRandomTypeNums(user)) - .addAllHelpFightList(CBean2Proto.getHelpFightList(user)) + .addAllHelpFightList(CBean2Proto.getHelpHeroList(user)) .addAllSixiangInfos(sixiangxinfaInfos) .setServerOpenTime((int) (openTime / 1000)) .setXiuweiLevel(heroManager.getXiuweiLevel()) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java index a29c9356c..97ea25e47 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java @@ -87,10 +87,7 @@ public class Hero extends MongoBase implements Comparable,Cloneable { this.training = new Training(); } - /** - * 大脑天宫 - * 初始化英雄,不入英雄背包 - */ + // 大脑天宫 初始化英雄,不入英雄背包 public Hero(Hero hero,int uid,int heroTid,int level) { this.setRootCollection(User._COLLECTION_NAME); this.id = KeyGenUtils.produceIdByModule(UUIDEnum.HERO, uid); @@ -111,9 +108,7 @@ public class Hero extends MongoBase implements Comparable,Cloneable { this.jewelInfo = new HashSet<>(hero.getJewelInfo()); } - /** - * 创建默认英雄 - */ + // 创建默认英雄 public Hero(int uid, int heroTid, int initStar){ this.setRootCollection(User._COLLECTION_NAME); this.id = KeyGenUtils.produceIdByModule(UUIDEnum.HERO, uid); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java index fcd7153d3..70e3691a8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java @@ -4,8 +4,11 @@ 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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class PropertyItem extends MongoBase { + private static final Logger LOGGER = LoggerFactory.getLogger(PropertyItem.class); private String id;// 唯一id private int equipId;// 道具id @@ -77,7 +80,7 @@ public class PropertyItem extends MongoBase { clone = (PropertyItem) super.clone(); clone.init(0,""); } catch (CloneNotSupportedException e) { - e.printStackTrace(); + LOGGER.error("强化类型装备克隆失败........",e); } return clone; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHero.java index b7987bd68..d1e226f78 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHero.java @@ -56,6 +56,8 @@ public class HelpHero { private Baubles baubles; + private List baublesList = new ArrayList<>(); + public int getUid() { return uid; } @@ -135,4 +137,12 @@ public class HelpHero { public void setBaubles(Baubles baubles) { this.baubles = baubles; } + + public List getBaublesList() { + return baublesList; + } + + public void setBaublesList(List baublesList) { + this.baublesList = baublesList; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHeroLogic.java index df75452b8..d6c242fe7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHeroLogic.java @@ -83,7 +83,7 @@ public class HelpHeroLogic { // 我的助战 if (typeEnum == Me){ for (Map.Entry data:helpHeroMap.entrySet()){ - result.add(CBean2Proto.helpHeroProto(data.getValue())); + result.add(CBean2Proto.buildHelpHeroToProto(data.getValue())); } } // 人佛妖道 @@ -113,7 +113,7 @@ public class HelpHeroLogic { if (friends.contains(Integer.parseInt(data.getKey()))){ // 此处进行助战类型赋值 data.getValue().setHelpType(0); - result.add(CBean2Proto.helpHeroProto(data.getValue())); + result.add(CBean2Proto.buildHelpHeroToProto(data.getValue())); continue; } @@ -122,7 +122,7 @@ public class HelpHeroLogic { if (mem.contains(Integer.parseInt(data.getKey()))){ // 此处进行助战类型赋值 data.getValue().setHelpType(1); - result.add(CBean2Proto.helpHeroProto(data.getValue())); + result.add(CBean2Proto.buildHelpHeroToProto(data.getValue())); break; } } @@ -134,7 +134,7 @@ public class HelpHeroLogic { HelpHero helpHero = getHelpHero(subKey1, typeEnum.getPropertyId()); // 英雄不存在添加 if (helpHero != null && !strings.contains(helpHero.getHero().getId())){ - result.add(CBean2Proto.helpHeroProto(helpHero)); + result.add(CBean2Proto.buildHelpHeroToProto(helpHero)); } } return result; @@ -157,10 +157,11 @@ public class HelpHeroLogic { if (helpHero != null){ throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"已选择其他神将!"); } + HelpHero helpHeroForRedis = CBean2Proto.buildHelpHeroToRedis(user, hero); // 自己的助战列表添加 - addHelpHero(subKey,propertyName,CBean2Proto.heroToHelpHero(user,hero)); + addHelpHero(subKey,propertyName, helpHeroForRedis); // 类型助战列表添加,自己的助战列表没有该类型英雄,那么对应类型的助战列表也应该没有对应英雄,所以这里不再循环验证 - addHelpHero(String.valueOf(propertyName),user.getId(),CBean2Proto.heroToHelpHero(user,hero)); + addHelpHero(String.valueOf(propertyName),user.getId(), helpHeroForRedis); // 配置表,获取自己设置助战奖励 SCampTowerSetting campTowerSetting = STableManager.getConfig(SCampTowerSetting.class).get(1); 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 e524c95d1..bf71a8f1f 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 @@ -1323,7 +1323,8 @@ public class HeroLogic { } else { user.getTeamPosManager().changeTeamInfo(teamId, heroIds); } - } else if (teamId == TeamEnum.TEAM_ARENA_DEFENSE.getTeamId()) { + } + else if (teamId == TeamEnum.TEAM_ARENA_DEFENSE.getTeamId()) { long teamForce = calTeamTotalForce(user, teamId); //更新竞技场防御编队战力 String key = RedisKey.getKey(RedisKey.AREDEF_TEAM_FORCE_RANK, ""); 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 fa41feade..168a67874 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -70,9 +70,8 @@ public class CBean2Proto { /** * - * @param item + * @param item 道具 * @param itemNum 道具数量,一般是增量,-1 表示全量 - * @return */ public static CommonProto.Item getItem(Item item,long itemNum){ if(itemNum == -1){ @@ -115,7 +114,6 @@ public class CBean2Proto { } /** -<<<<<<< HEAD * 获取玩家皮肤列表 * @param user * @return @@ -185,8 +183,6 @@ public class CBean2Proto { /** * 获取玩家皮肤列表 - * @param user - * @return */ public static List getUserMountList(User user) { List userMountLists = new ArrayList<>(); @@ -211,12 +207,11 @@ public class CBean2Proto { user.getPlayerInfoManager().setUserMountValidTime(validTime); return userMountLists; } - /* 获取已选择的助战列表 - * @param user - * @return - * @throws Exception + + /** + * 获取已选择的助战列表 */ - public static List getHelpFightList(User user) throws Exception { + public static List getHelpHeroList(User user) throws Exception { List lists = new ArrayList<>(); // 助战英雄列表 String subKey = HelpHeroLogic.subKey(user.getId(),HelpHeroLogic.CHOOSE); @@ -225,7 +220,7 @@ public class CBean2Proto { return lists; } for (HelpHero hero : helpHeroMap.values()) { - lists.add(helpHeroProto(hero)); + lists.add(buildHelpHeroToProto(hero)); } return lists; } @@ -251,32 +246,66 @@ public class CBean2Proto { /** * 助战,redis类型转proto */ - public static CommonProto.HelpFightList helpHeroProto(HelpHero helpHero) throws Exception { + public static CommonProto.HelpFightList buildHelpHeroToProto(HelpHero helpHero) throws Exception { User otherUser = UserManager.getUser(helpHero.getUid()); // 魂宝灵宝 List jewels = buildHelpFightEquip(helpHero.getJewels()); // 法相 List faxiang = buildHelpFightEquip(helpHero.getFaxiangs()); + Hero hero = helpHero.getHero(); // 装备详细信息 List equips = new ArrayList<>(); - Map equip = helpHero.getHero().getEquipByPositionMap(); - equip.values().forEach(v->equips.add(getEquipProto(v))); + hero.getEquipByPositionMap().values().forEach(v->equips.add(getEquipProto(v))); + // 法宝 + CommonProto.Equip baublesProto = getBaublesProto(helpHero.getBaublesList(), helpHero.getBaubles()); // 获取英雄信息 return CommonProto.HelpFightList.newBuilder() .setUid(otherUser.getId()) .setUserName(otherUser.getPlayerInfoManager().getNickName()) .setGuildName(helpHero.getHelpType()) .setTrailType(helpHero.getFunctionType().getPropertyId()) - .setHero(getHero(helpHero.getHero())) + .setHero(getHero(hero)) .setState(helpHero.getState()) .addAllJewels(jewels) .addAllFaxiang(faxiang) .setFourTotal(helpHero.getFourTotalTier()) .addAllEquips(equips) + .setBaubles(baublesProto) .build(); } - public static List clonePropertyItemList(EquipManager equipManager, Set infoList){ + /** + * 助战,hero对象转redis类型 + * 存入redis时调用 + */ + public static HelpHero buildHelpHeroToRedis(User user, Hero hero) { + // 获取神将类型 + HelpTypeEnum type = HelpTypeEnum.getType(hero.getPropertyId()); + // 英雄镜像 + EquipManager equipManager = user.getEquipManager(); + // 魂宝灵宝镜像 + List jewels = buildPropertyItemList(equipManager, hero.getJewelInfo()); + // 法相 + List faxiangs = buildPropertyItemList(equipManager, hero.getFaxiangList()); + // 结果返回,援助类型不在这里写 + HelpHero helpHero = new HelpHero(); + helpHero.setUid(user.getId()); + helpHero.setFunctionType(type); + helpHero.setCreatTime(TimeUtils.now()); + helpHero.setHero(hero); + helpHero.setState(0); + helpHero.setJewels(jewels); + helpHero.setFaxiangs(faxiangs); + helpHero.setFourTotalTier(user.getPlayerInfoManager().getFourChallengeTotal()); + helpHero.setBaubles(equipManager.getBaubles(hero.getBauBlesId())); + helpHero.setBaublesList(buildBaublesList(equipManager, hero.getBauBlesId())); + return helpHero; + } + + /** + * 克隆装备信息 + */ + public static List buildPropertyItemList(EquipManager equipManager, Set infoList){ List List = new ArrayList<>(); if (infoList == null || infoList.isEmpty()){ return List; @@ -284,38 +313,34 @@ public class CBean2Proto { for (String id: infoList){ PropertyItem item = equipManager.getEquip(id); if (item != null){ - List.add(item.clone()); + List.add(item); } } return List; } /** - * 助战,hero对象转redis类型 - * 存入redis时调用 + * 克隆装备信息 */ - public static HelpHero heroToHelpHero(User user,Hero hero) { - // 获取神将类型 - HelpTypeEnum type = HelpTypeEnum.getType(hero.getPropertyId()); - // 英雄镜像 - Hero heroVo = hero.clone(); - EquipManager equipManager = user.getEquipManager(); - // 魂宝灵宝镜像 - List jewels = clonePropertyItemList(equipManager, heroVo.getJewelInfo()); - // 法相 - List faxiangs = clonePropertyItemList(equipManager, heroVo.getFaxiangList()); - // 结果返回,援助类型不在这里写 - HelpHero helpHero = new HelpHero(); - helpHero.setUid(user.getId()); - helpHero.setFunctionType(type); - helpHero.setCreatTime(TimeUtils.now()); - helpHero.setHero(heroVo); - helpHero.setState(0); - helpHero.setJewels(jewels); - helpHero.setFaxiangs(faxiangs); - helpHero.setFourTotalTier(user.getPlayerInfoManager().getFourChallengeTotal()); - helpHero.setBaubles(equipManager.getBaubles(hero.getBauBlesId())); - return helpHero; + public static List buildBaublesList(EquipManager equipManager, String baublesId){ + List list = new ArrayList<>(); + // 当前法宝信息 + Baubles baublesEquip = equipManager.getBaubles(baublesId); + if (baublesEquip == null){ + return list; + } + // 庇佑信息 + Set blessList = baublesEquip.getBlessList(); + if (blessList != null && !blessList.isEmpty()){ + for (String id: blessList){ + Baubles item = equipManager.getBaubles(id); + if (item == null){ + continue; + } + list.add(item); + } + } + return list; } public static CommonProto.UserRank.Builder getOneUserRank(User everyUser, int function, com.ljsd.jieling.logic.dao.root.ArenaRecord arenaRecord){ @@ -343,9 +368,8 @@ public class CBean2Proto { } /** - * 获取英雄的proto对象 - * @param hero 英雄信息 - * @return + * 获取英雄信息 + * @param hero 英雄 */ public static CommonProto.Hero getHero(Hero hero){ // 魂印 @@ -515,6 +539,20 @@ public class CBean2Proto { return builder.build(); } + /** + * 获取法宝信息 + */ + public static CommonProto.Equip getBaublesProto(List baublesList, Baubles bauBles){ + CommonProto.Equip.Builder builder = getPropertyEquipProto(bauBles).toBuilder(); + if (baublesList != null && !baublesList.isEmpty()){ + for (Baubles baubles : baublesList) { + CommonProto.Equip equip = getPropertyEquipProto(baubles); + builder.addBless(equip); + } + } + return builder.build(); + } + public static CommonProto.PokemonInfo getPokemon(Pokemon pokemon) { return CommonProto.PokemonInfo.newBuilder() .setId(pokemon.getId()).setLevel(pokemon.getLevel()).setStar(pokemon.getStar()).setTempId(pokemon.getTmpId()) @@ -664,8 +702,8 @@ public class CBean2Proto { /** * 多对塔专用怪兽信息 - * @param tower - * @param indexId + * @param tower 多对塔怪兽表配置信息 + * @param indexId 位置 * @return */ @SuppressWarnings("StringBufferReplaceableByString") diff --git a/tablemanager/src/main/java/manager/STableManager.java b/tablemanager/src/main/java/manager/STableManager.java index aee6166cc..0f521ec9e 100644 --- a/tablemanager/src/main/java/manager/STableManager.java +++ b/tablemanager/src/main/java/manager/STableManager.java @@ -226,7 +226,7 @@ public class STableManager { try { dealParams(clazz, map, key, type, obj, prarms); }catch (Exception e){ - LOGGER.error("clazz = [" + clazz + "], line = [" + line.substring(0,10) + "]"+prarms.toString() ); + LOGGER.warn("clazz = [" + clazz + "], line = [" + line.substring(0,10) + "]"+ Arrays.toString(prarms)); throw e; } break;