123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- using System.Collections;
- using System.Collections.Generic;
- using Excel2Json;
- using Fort23.UTool;
- using GameLogic.Hero;
- using UnityEngine;
- using Utility;
- public class PlayerManager : Singleton<PlayerManager>
- {
- public List<HeroInfo> heroList = new List<HeroInfo>();
- /// <summary>
- /// 上阵的英雄,也可以叫主力,替补英雄等级=主力英雄的最低等级(和afk一样的)
- /// </summary>
- public List<HeroInfo> heroListInLead = new List<HeroInfo>();
- public GameConstantConfig gameConstantConfig;
-
- public HeroInfo lastHeroInfo;
- public void Init()
- {
- gameConstantConfig = ConfigComponent.Instance.Get<GameConstantConfig>(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;
- /// <summary>
- /// 快速保存英雄数据
- /// 反复升级统一英雄时,就不用反复遍历列表了
- /// </summary>
- /// <param name="heroInfo"></param>
- /// <returns>ture=升级的是同一个英雄</returns>
- 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;
- }
-
- /// <summary>
- /// 保存英雄数据
- /// </summary>
- /// <param name="heroInfo"></param>
- 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;
- }
- }
- }
- }
- }
|