package config; import manager.STableManager; import manager.Table; import java.util.*; @Table(name = "HeroConfig") public class SCHero implements BaseConfig{ public static Map sCHero; private int id; private int piecesId; private int piecesCount; private String readingName; private int propertyName; //角色属性 private int profession; //角色职业 private int maxRank; //角色最高星级 private int star; private float hp; private float attack; //攻击力 private float physicalDefence; //护甲 private float magicDefence; //魔抗 private float speed; //速度 private int actionPower; private int[][] rankupConsumeMaterial; private int[][] openSkillRules; private int[][] awaken; private int[][] openPassiveSkillRules; private int[] equipTalismana; private int[][] secondaryFactor; private int quality; private int natural; private int[] growthSwitch; private int job; private int maxLevel; private int weight; private int joinWishDay; private int[][] soul; private int[][] soulSkill; private int isSoulOpen; private Map secondaryFactorMap; private Map> skillListByStar; private int[][] returnBook; // 觉醒增加的技能属性 private Map>> awakSkillMap; private Map> consumeMaterialInfoOfPositionByStar; private Map>> passiveSkillMap; private static Map piecesMap; public static class ConsumeMaterialInfo{ private int groupID; private int nums; public ConsumeMaterialInfo(int groupID, int nums) { this.groupID = groupID; this.nums = nums; } public int getGroupID() { return groupID; } public void setGroupID(int groupID) { this.groupID = groupID; } public int getNums() { return nums; } public void setNums(int nums) { this.nums = nums; } } @Override public void init() throws Exception { Map integerSCHeroMap = STableManager.getConfig(SCHero.class); for(SCHero scHero : integerSCHeroMap.values()){ int[][] secondaryFactor = scHero.getSecondaryFactor(); if(secondaryFactor!=null && secondaryFactor.length>0){ Map secondaryFactorMapTmp = new HashMap<>(secondaryFactor.length); for(int[] secondaryFactorItem : secondaryFactor){ int property = secondaryFactorItem[0]; int propertyValue = secondaryFactorItem[1]; secondaryFactorMapTmp.put(property, propertyValue); scHero.setSecondaryFactorMap(secondaryFactorMapTmp); } } Map> consumeMaterialInfoByStarTmp = new HashMap<>(); int[][] rankupConsumeMaterial = scHero.getRankupConsumeMaterial(); for(int j=0;j()); } consumeMaterialInfoByStarTmp.get(star).put(position,new ConsumeMaterialInfo(groupID,nums)); } scHero.setConsumeMaterialInfoOfPositionByStar(consumeMaterialInfoByStarTmp); int[][] openSkillRules = scHero.getOpenSkillRules(); // 技能 Map> skillTmp = new HashMap<>(); for(int i=0;i()); } skillTmp.get(star).add(skillId); } for(List items : skillTmp.values()){ if(items.size() <2){ items.add(0); } } scHero.setSkillListByStar(skillTmp); Map>> passiveSkillMapTmp = new HashMap<>(); passiveSkillMapTmp.put(1,new TreeMap<>()); passiveSkillMapTmp.put(2,new TreeMap<>()); for(int[] openSkillRule : scHero.getOpenPassiveSkillRules()){ int type = openSkillRule[0]; int starOrBreakId = openSkillRule[1]; int skillId = openSkillRule[2]; passiveSkillMapTmp.get(type).computeIfAbsent(starOrBreakId,a->{ return new ArrayList<>(passiveSkillMapTmp.get(type).getOrDefault(a-1,new ArrayList<>())); }); passiveSkillMapTmp.get(type).get(starOrBreakId).add(skillId); } scHero.setPassiveSkillMap(passiveSkillMapTmp); // 大于10星为 觉醒技能 int[][] awakens = scHero.getAwaken(); Map>> awakSkillMapTmp = new HashMap<>(); if (awakens != null && awakens.length > 0&&awakens[0].length>0) { awakSkillMapTmp.put(1, new TreeMap<>()); awakSkillMapTmp.put(2, new TreeMap<>()); for (int[] openSkillRule : awakens) { int type = openSkillRule[0]; int starOrBreakId = openSkillRule[1]; int skillId = openSkillRule[2]; awakSkillMapTmp.get(type).computeIfAbsent(starOrBreakId, a -> { return new ArrayList<>(awakSkillMapTmp.get(type).getOrDefault(a - 1, new ArrayList<>())); }); awakSkillMapTmp.get(type).get(starOrBreakId).add(skillId); } } scHero.setAwakSkillMap(awakSkillMapTmp); } sCHero = integerSCHeroMap; piecesMap = new HashMap<>(); for(Map.Entry hero:sCHero.entrySet()){ piecesMap.put(hero.getValue().getPiecesId(),hero.getValue()); } } public static SCHero getHeroByPieceId(int piecesId){ return piecesMap.get(piecesId); } public Map getConsumeMaterialInfoOfPositionByStar(int star) { return consumeMaterialInfoOfPositionByStar.get(star); } public void setConsumeMaterialInfoOfPositionByStar(Map> consumeMaterialInfoOfPositionByStar) { this.consumeMaterialInfoOfPositionByStar = consumeMaterialInfoOfPositionByStar; } public static Map getsCHero() { return sCHero; } public int getId() { return id; } public int getPiecesId() { return piecesId; } public int getPiecesCount() { return piecesCount; } public int getProfession() { return profession; } public int getMaxRank() { return maxRank; } public float getHp() { return hp; } public float getAttack() { return attack; } public float getPhysicalDefence() { return physicalDefence; } public float getMagicDefence() { return magicDefence; } public float getSpeed() { return speed; } public int getPropertyName() { return propertyName; } public int getActionPower() { return actionPower; } public int[][] getRankupConsumeMaterial() { return rankupConsumeMaterial; } public int[][] getOpenSkillRules() { return openSkillRules; } public int getStar() { return star; } public int[][] getSecondaryFactor() { return secondaryFactor; } public Map getSecondaryFactorMap() { return secondaryFactorMap; } public void setSecondaryFactorMap(Map secondaryFactorMap) { this.secondaryFactorMap = secondaryFactorMap; } public int getQuality() { return quality; } public int getNatural() { return natural; } public String getReadingName() { return readingName; } public int[][] getOpenPassiveSkillRules() { return openPassiveSkillRules; } public List getSkillListByStar(int star) { return skillListByStar.get(star); } public void setSkillListByStar(Map> skillListByStar) { this.skillListByStar = skillListByStar; } public int[] getGrowthSwitch() { return growthSwitch; } public int[] getEquipTalismana() { return equipTalismana; } public List getPassiveSkills(int type,int id){ if( passiveSkillMap.get(type).floorEntry(id)==null){ return new ArrayList<>(0); } return passiveSkillMap.get(type).floorEntry(id).getValue(); } public List getAwakSkills(int type, int id) { if (awakSkillMap.get(type)==null||awakSkillMap.get(type).floorEntry(id) == null) { return new ArrayList<>(0); } return awakSkillMap.get(type).floorEntry(id).getValue(); } public void setPassiveSkillMap(Map>> passiveSkillMap) { this.passiveSkillMap = passiveSkillMap; } public void setAwakSkillMap(Map>> awakSkillMap) { this.awakSkillMap = awakSkillMap; } public int[][] getAwaken() { return awaken; } public int getJob() { return job; } public int getMaxLevel() { return maxLevel; } public int getWeight() { return weight; } public int getJoinWishDay() { return joinWishDay; } public int[][] getSoul() { return soul; } public int[][] getSoulSkill() { return soulSkill; } public int getIsSoulOpen() { return isSoulOpen; } public int[][] getReturnBook() { return returnBook; } }