PlayerManager.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. public HeroInfo GetHeroInfo(int modelID)
  33. {
  34. for (int i = 0; i < heroListInLead.Count; i++)
  35. {
  36. HeroInfo info = heroListInLead[i];
  37. if (info.modelID == modelID)
  38. {
  39. return info;
  40. }
  41. }
  42. return null;
  43. }
  44. private int leadHeroIdx = 0;
  45. /// <summary>
  46. /// 快速保存英雄数据
  47. /// 反复升级统一英雄时,就不用反复遍历列表了
  48. /// </summary>
  49. /// <param name="heroInfo"></param>
  50. /// <returns>ture=升级的是同一个英雄</returns>
  51. private bool QuickSaveHeroData(HeroInfo heroInfo)
  52. {
  53. var lastHeroData= AccountFileInfo.Instance.playerData.HeroListInLeadDatas[leadHeroIdx];
  54. if (heroInfo.modelID == lastHeroData.heroModelId)
  55. {
  56. AccountFileInfo.Instance.playerData.HeroListInLeadDatas[leadHeroIdx] = heroInfo.ToHeroData();
  57. AccountFileInfo.Instance.SavePlayerData();
  58. return true;
  59. }
  60. return false;
  61. }
  62. /// <summary>
  63. /// 保存英雄数据
  64. /// </summary>
  65. /// <param name="heroInfo"></param>
  66. public void SaveHeroData(HeroInfo heroInfo)
  67. {
  68. if (!QuickSaveHeroData(heroInfo))
  69. {
  70. for (int i = 0; i < AccountFileInfo.Instance.playerData.HeroListInLeadDatas.Count; i++)
  71. {
  72. AccountFileInfo.HeroData heroData = AccountFileInfo.Instance.playerData.HeroListInLeadDatas[i];
  73. if (heroData.heroModelId == heroInfo.modelID)
  74. {
  75. AccountFileInfo.Instance.playerData.HeroListInLeadDatas[i] = heroInfo.ToHeroData();
  76. //存下来,用于快速查找
  77. leadHeroIdx = i;
  78. return;
  79. }
  80. }
  81. }
  82. }
  83. }