WidgetHero.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using System.Threading.Tasks;
  2. using Common.Utility.CombatEvent;
  3. using Core.Utility;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using GameLogic.Hero;
  7. using UnityEngine;
  8. using UnityEngine.UI;
  9. using Utility;
  10. namespace Fort23.Mono
  11. {
  12. [UIBinding(prefab = "WidgetHero")]
  13. public partial class WidgetHero : UIComponent
  14. {
  15. private void Init()
  16. {
  17. SetMoreBtnActive(false);
  18. }
  19. public override void AddEvent()
  20. {
  21. }
  22. public override void DelEvent()
  23. {
  24. }
  25. public override void AddButtonEvent()
  26. {
  27. LogTool.Log("添加英雄点击事件");
  28. btnHero.onClick.AddListener(OnHeroClick);
  29. btnUpgrade.onClick.AddListener(OnUpgradeClick);
  30. btnHeroPanel.onClick.AddListener(OnHeroPanelClick);
  31. }
  32. private void OnUpgradeClick()
  33. {
  34. // throw new System.NotImplementedException();
  35. PlayerManager.Instance.heroController.UpgradeHeroLogic(heroInfo);
  36. if (PlayerManager.Instance.heroController.CanUpgrade(heroInfo) == HeroUpResultType.Success)
  37. {
  38. txtUpgrade.color = Color.white;
  39. }
  40. else
  41. {
  42. txtUpgrade.color = Color.red;
  43. }
  44. }
  45. private async void OnHeroPanelClick()
  46. {
  47. // throw new System.NotImplementedException();
  48. await OpenHeroDetailPanel();
  49. }
  50. public void SetMoreBtnActive(bool isActive)
  51. {
  52. btnUpgrade.gameObject.SetActive(isActive);
  53. btnHeroPanel.gameObject.SetActive(isActive);
  54. }
  55. private async void OnHeroClick()
  56. {
  57. LogTool.Log("点击英雄");
  58. HeroClickEventData heroClickEventData = HeroClickEventData.Create();
  59. heroClickEventData.heroId = heroInfo.modelID;
  60. EventManager.Instance.Dispatch(CustomEventType.HeroClick, heroClickEventData);
  61. // OffsetPos();
  62. await OpenHeroDetailPanel();
  63. }
  64. private void OffsetPos()
  65. {
  66. Vector3 curPos = transform.parent.localPosition;
  67. Vector3 newPos;
  68. if (curPos.y == 0)
  69. {
  70. newPos = new Vector3(curPos.x, curPos.y + GlobalParam.Hero_Pos_Offset, curPos.z);
  71. SetMoreBtnActive(true);
  72. txtUpgrade.text = heroInfo.powerUpConfig.levelUpExp.ToStringEx();
  73. if (PlayerManager.Instance.heroController.CanUpgrade(heroInfo) == HeroUpResultType.Success)
  74. {
  75. txtUpgrade.color = Color.white;
  76. }
  77. else
  78. {
  79. txtUpgrade.color = Color.red;
  80. }
  81. }
  82. else
  83. {
  84. newPos = new Vector3(curPos.x, curPos.y - GlobalParam.Hero_Pos_Offset, curPos.z);
  85. SetMoreBtnActive(false);
  86. }
  87. transform.parent.localPosition = newPos;
  88. MainSceneController.Instance.mainUI?.RestWidgetHeroPos(this);
  89. }
  90. private async Task OpenHeroDetailPanel()
  91. {
  92. // HeroDetailPanel heroDetailPanel = UIManager.Instance.GetComponent<HeroDetailPanel>();
  93. // if (heroDetailPanel == null)
  94. // {
  95. // heroDetailPanel = await UIManager.Instance.LoadAndOpenPanel<HeroDetailPanel>(Callback);
  96. // }
  97. HeroDetailPanel heroDetailPanel = await UIManager.Instance.LoadAndOpenPanel<HeroDetailPanel>(Callback,UILayer.Top,isFullUI:true);
  98. heroDetailPanel.InitHeroDetailPanel(heroInfo);
  99. }
  100. private void Callback(HeroDetailPanel obj)
  101. {
  102. LogTool.Log("HeroDetailPanel 加载完成");
  103. }
  104. public HeroInfo heroInfo;
  105. /// <summary>
  106. ///
  107. /// </summary>
  108. /// <param name="heroInfo"></param>
  109. public void InitHero(HeroInfo heroInfo)
  110. {
  111. this.heroInfo = heroInfo;
  112. // lv.text = heroInfo.level.Value.ToString();
  113. iconHero.icon_name = heroInfo.modelConfig.headicon;
  114. // iconHero.SetNativeSize();
  115. iconZhiYe.icon_name = heroInfo.iconZhiYe;
  116. // HeroUITools.SetStarShow(stars, heroInfo.star.Value);
  117. SetDynamicData();
  118. }
  119. public void UpdateWidgetUI(HeroInfo heroInfo)
  120. {
  121. this.heroInfo = heroInfo;
  122. SetDynamicData();
  123. }
  124. public void SetDynamicData()
  125. {
  126. lv.text = heroInfo.level.Value.ToString();
  127. HeroUITools.SetStarShow(stars, heroInfo.star.Value);
  128. }
  129. }
  130. }