PlayerManager.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using Excel2Json;
  4. using Fort23.UTool;
  5. using GameLogic.Hero;
  6. using UnityEngine;
  7. using Utility;
  8. public class PlayerManager : Singleton<PlayerManager>
  9. {
  10. public List<HeroInfo> heroList = new List<HeroInfo>();
  11. /// <summary>
  12. /// 上阵的英雄,也可以叫主力,替补英雄等级=主力英雄的最低等级(和afk一样的)
  13. /// </summary>
  14. public List<HeroInfo> heroListInLead = new List<HeroInfo>();
  15. public GameConstantConfig gameConstantConfig;
  16. public void Init()
  17. {
  18. gameConstantConfig = ConfigComponent.Instance.Get<GameConstantConfig>(1);
  19. InitGameData();
  20. }
  21. private void InitGameData()
  22. {
  23. AccountFileInfo.Instance.LoadPlayerData();
  24. for (int i = 0; i < AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Count; i++)
  25. {
  26. AccountFileInfo.HeroData heroData = AccountFileInfo.Instance.playerData.HeroListInLeadDatas[i];
  27. HeroInfo heroInfo = new HeroInfo();
  28. heroInfo.InitHero(heroData);
  29. heroListInLead.Add(heroInfo);
  30. }
  31. }
  32. private int leadHeroIdx = 0;
  33. /// <summary>
  34. /// 快速保存英雄数据
  35. /// 反复升级统一英雄时,就不用反复遍历列表了
  36. /// </summary>
  37. /// <param name="heroInfo"></param>
  38. /// <returns>ture=升级的是同一个英雄</returns>
  39. private bool QuickSaveHeroData(HeroInfo heroInfo)
  40. {
  41. var lastHeroData= AccountFileInfo.Instance.playerData.HeroListInLeadDatas[leadHeroIdx];
  42. if (heroInfo.modelID == lastHeroData.heroModelId)
  43. {
  44. AccountFileInfo.Instance.playerData.HeroListInLeadDatas[leadHeroIdx] = heroInfo.ToHeroData();
  45. AccountFileInfo.Instance.SavePlayerData();
  46. return true;
  47. }
  48. return false;
  49. }
  50. /// <summary>
  51. /// 保存英雄数据
  52. /// </summary>
  53. /// <param name="heroInfo"></param>
  54. public void SaveHeroData(HeroInfo heroInfo)
  55. {
  56. if (!QuickSaveHeroData(heroInfo))
  57. {
  58. for (int i = 0; i < AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Count; i++)
  59. {
  60. AccountFileInfo.HeroData heroData = AccountFileInfo.Instance.playerData.HeroListInLeadDatas[i];
  61. if (heroData.heroModelId == heroInfo.modelID)
  62. {
  63. AccountFileInfo.Instance.playerData.HeroListInLeadDatas[i] = heroInfo.ToHeroData();
  64. //存下来,用于快速查找
  65. leadHeroIdx = i;
  66. return;
  67. }
  68. }
  69. }
  70. }
  71. }