using System.Collections; using System.Collections.Generic; using Excel2Json; using Fort23.UTool; using GameLogic.Hero; using UnityEngine; using Utility; public class PlayerManager : Singleton { public List heroList = new List(); /// /// 上阵的英雄,也可以叫主力,替补英雄等级=主力英雄的最低等级(和afk一样的) /// public List heroListInLead = new List(); public GameConstantConfig gameConstantConfig; public HeroInfo lastHeroInfo; public void Init() { gameConstantConfig = ConfigComponent.Instance.Get(1); InitGameData(); } private void InitGameData() { AccountFileInfo.Instance.LoadPlayerData(); for (int i = 0; i < AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Count; i++) { AccountFileInfo.HeroData heroData = AccountFileInfo.Instance.playerData.HeroListInLeadDatas[i]; HeroInfo heroInfo = new HeroInfo(); heroInfo.InitHero(heroData); heroListInLead.Add(heroInfo); } } public void InitTestHero() { heroListInLead.Clear(); // AccountFileInfo.Instance.LoadPlayerData(); AccountFileInfo.HeroData heroData1 = new AccountFileInfo.HeroData { heroModelId = 105, heroPowerId = 1, heroPromoteId = 3 }; AccountFileInfo.HeroData heroData2 = new AccountFileInfo.HeroData { heroModelId = 107, heroPowerId = 1, heroPromoteId = 3 }; AccountFileInfo.HeroData heroData3 = new AccountFileInfo.HeroData { heroModelId = 116, heroPowerId = 1, heroPromoteId = 3 }; AccountFileInfo.HeroData heroData4 = new AccountFileInfo.HeroData { heroModelId = 113, heroPowerId = 1, heroPromoteId = 3 }; AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Clear(); AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Add(heroData1); AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Add(heroData2); AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Add(heroData3); AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Add(heroData4); for (int i = 0; i < AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Count; i++) { AccountFileInfo.HeroData heroData = AccountFileInfo.Instance.playerData.HeroListInLeadDatas[i]; HeroInfo heroInfo = new HeroInfo(); heroInfo.InitHero(heroData); heroListInLead.Add(heroInfo); } } public CombatHeroInfo GetHeroInfo(int modelID) { if (lastHeroInfo != null && lastHeroInfo.modelID == modelID) { return lastHeroInfo; } for (int i = 0; i < heroListInLead.Count; i++) { HeroInfo info = heroListInLead[i]; if (info.modelID == modelID) { return info; } } return null; } private int leadHeroIdx = 0; /// /// 快速保存英雄数据 /// 反复升级统一英雄时,就不用反复遍历列表了 /// /// /// ture=升级的是同一个英雄 private bool QuickSaveHeroData(HeroInfo heroInfo) { var lastHeroData= AccountFileInfo.Instance.playerData.HeroListInLeadDatas[leadHeroIdx]; if (heroInfo.modelID == lastHeroData.heroModelId) { AccountFileInfo.Instance.playerData.HeroListInLeadDatas[leadHeroIdx] = heroInfo.ToHeroData(); AccountFileInfo.Instance.SavePlayerData(); return true; } return false; } /// /// 保存英雄数据 /// /// public void SaveHeroData(HeroInfo heroInfo) { if (!QuickSaveHeroData(heroInfo)) { for (int i = 0; i < AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Count; i++) { AccountFileInfo.HeroData heroData = AccountFileInfo.Instance.playerData.HeroListInLeadDatas[i]; if (heroData.heroModelId == heroInfo.modelID) { AccountFileInfo.Instance.playerData.HeroListInLeadDatas[i] = heroInfo.ToHeroData(); //存下来,用于快速查找 leadHeroIdx = i; AccountFileInfo.Instance.SavePlayerData(); return; } } } } }