using System.Collections.Generic; using UnityEngine; using LitJson; // 武将信息:实际获得的武将,不包含图鉴数据 public partial class HeroInfo { // 武将配置表ID public int heroId; // 武将配置 public HeroConfig heroConfig; public ItemModel itemHero; //引用背包里的 数据同步 public HeroCountry heroCountry { get { return (HeroCountry)heroConfig.Country; } } //是否主线上阵 81 # 所在阵容信息列表 [阵容类型*10000+阵型类型*100+位置编号, ...] public bool isInMainBattle { get { //从列表中找到 阵容为1的 主线阵容 var list = itemHero.GetUseData(81); if (list != null && list.Count > 0) { var index = list.FindIndex((item) => item / 10000 == 1); if (index >= 0) { return true; } } return false; } } public List fetterInfoList = new List(); public List talentList = new List(); public HeroInfo(ItemModel _itemHero) { UpdateHero(_itemHero); } public HeroInfo(HB424_tagSCTurnFightInit.tagSCTurnFightObj fightObj) { // 战斗表现需要这些基本就够 不够还需要服务器加 heroId = (int)fightObj.HeroID; heroConfig = HeroConfig.Get(heroId); SkinID = (int)fightObj.SkinID; skinConfig = HeroSkinConfig.Get(SkinID); } #if UNITY_EDITOR public HeroInfo() { heroId = 520001; // 默认英雄ID heroConfig = HeroConfig.Get(heroId); awakeConfig = HeroAwakeConfig.GetHeroAwakeConfig(heroId, awakeLevel); breakConfig = HeroBreakConfig.GetHeroBreakConfig(heroId, breakLevel); qualityAwakeConfig = HeroQualityAwakeConfig.GetQualityAwakeConfig(Quality, awakeLevel); qualityConfig = HeroQualityConfig.Get(Quality); qualityBreakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(Quality, awakeLevel); CalculateProperties(); } #endif public void UpdateHero(ItemModel _itemHero) { itemHero = _itemHero; // HeroConfigUtility heroId = itemHero.config.ID; InitConfigs(); // 71 # 英雄天赋ID列表 // List talentSkillList = itemHero.GetUseData(71); // // 73 # 英雄天赋ID等级列表,对应71天赋ID的等级 // List talentLvList = itemHero.GetUseData(73); // // 75 # 英雄天赋洗炼锁定索引列表,对应71天赋ID索引 // List talentLockList = itemHero.GetUseData(75); // if (talentLockList.Count != talentLvList.Count || talentLvList.Count != talentSkillList.Count) // { // Debug.LogError("天赋ID列表及后续的数据数量没对上"); // } // // 天赋 // talentList.Clear(); // for (int i = 0; i < talentSkillList.Count; i++) // { // talentList.Add(new HeroTalentInfo(this, talentSkillList[i], talentLvList[i], talentLockList[i])); // } // // 羁绊 // fetterInfoList.Clear(); // for (int i = 0; i < heroConfig.FetterIDList.Length; i++) // { // fetterInfoList.Add(new HeroFetterInfo(this, heroConfig.FetterIDList[i])); // } // 77 # 英雄天赋洗炼随机ID列表 // 79 # 英雄觉醒时随机天赋选项ID列表 // 80 # 主阵型上阵位置 } protected void InitConfigs() { // 武将配置 heroConfig = HeroConfig.Get(heroId); // 觉醒配置 (满级为空) awakeConfig = HeroAwakeConfig.GetHeroAwakeConfig(heroId, awakeLevel); // 突破配置 breakConfig = HeroBreakConfig.GetHeroBreakConfig(heroId, breakLevel); // 羁绊配置 可能需要fetterid 去检索效率太低 // fetterConfig; // 品质觉醒配置 qualityAwakeConfig = HeroQualityAwakeConfig.GetQualityAwakeConfig(Quality, awakeLevel); // 品质配置 qualityConfig = HeroQualityConfig.Get(Quality); // 品质突破配置 qualityBreakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(Quality, awakeLevel); } public int GetInheritRate(HeroAttrType attrType) { return heroConfig.GetInheritPercent(attrType); } }