WidgetHero.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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 bool _isSelectHeroCame;
  16. private void Init()
  17. {
  18. SetMoreBtnActive(false);
  19. }
  20. public override void AddEvent()
  21. {
  22. EventManager.Instance.AddEventListener(CustomEventType.HeroClick, HeroClickEvent);
  23. }
  24. public override void DelEvent()
  25. {
  26. }
  27. public override void AddButtonEvent()
  28. {
  29. LogTool.Log("添加英雄点击事件");
  30. btnHero.onClick.AddListener(OnHeroClick);
  31. btnUpgrade.onClick.AddListener(OnUpgradeClick);
  32. btnHeroPanel.onClick.AddListener(OnHeroPanelClick);
  33. Button_came.onClick.AddListener(OnHeroClickCame);
  34. }
  35. private void HeroClickEvent(IEventData iEventData)
  36. {
  37. HeroClickEventData heroClickEventData = iEventData as HeroClickEventData;
  38. if (heroClickEventData.heroId == heroInfo.modelID)
  39. {
  40. if (_isSelectHeroCame)
  41. {
  42. Button_came_icon.color = Color.white;
  43. }
  44. else
  45. {
  46. Button_came_icon.color = Color.green;
  47. }
  48. _isSelectHeroCame = !_isSelectHeroCame;
  49. }
  50. else
  51. {
  52. if (_isSelectHeroCame)
  53. {
  54. Button_came_icon.color = Color.white;
  55. }
  56. _isSelectHeroCame = false;
  57. }
  58. }
  59. private void OnUpgradeClick()
  60. {
  61. // throw new System.NotImplementedException();
  62. PlayerManager.Instance.heroController.UpgradeHeroLogic(heroInfo);
  63. if (PlayerManager.Instance.heroController.CanUpgrade(heroInfo) == HeroUpResultType.Success)
  64. {
  65. txtUpgrade.color = Color.white;
  66. }
  67. else
  68. {
  69. txtUpgrade.color = Color.red;
  70. }
  71. }
  72. private async void OnHeroPanelClick()
  73. {
  74. // throw new System.NotImplementedException();
  75. await OpenHeroDetailPanel();
  76. }
  77. public void SetMoreBtnActive(bool isActive)
  78. {
  79. btnUpgrade.gameObject.SetActive(isActive);
  80. btnHeroPanel.gameObject.SetActive(isActive);
  81. }
  82. private async void OnHeroClickCame()
  83. {
  84. HeroClickEventData heroClickEventData = HeroClickEventData.Create();
  85. heroClickEventData.heroId = heroInfo.modelID;
  86. EventManager.Instance.Dispatch(CustomEventType.HeroClick, heroClickEventData);
  87. }
  88. private async void OnHeroClick()
  89. {
  90. // OffsetPos();
  91. await OpenHeroDetailPanel();
  92. }
  93. private void OffsetPos()
  94. {
  95. Vector3 curPos = transform.parent.localPosition;
  96. Vector3 newPos;
  97. if (curPos.y == 0)
  98. {
  99. newPos = new Vector3(curPos.x, curPos.y + GlobalParam.Hero_Pos_Offset, curPos.z);
  100. SetMoreBtnActive(true);
  101. txtUpgrade.text = heroInfo.powerUpConfig.levelUpExp.ToStringEx();
  102. if (PlayerManager.Instance.heroController.CanUpgrade(heroInfo) == HeroUpResultType.Success)
  103. {
  104. txtUpgrade.color = Color.white;
  105. }
  106. else
  107. {
  108. txtUpgrade.color = Color.red;
  109. }
  110. }
  111. else
  112. {
  113. newPos = new Vector3(curPos.x, curPos.y - GlobalParam.Hero_Pos_Offset, curPos.z);
  114. SetMoreBtnActive(false);
  115. }
  116. transform.parent.localPosition = newPos;
  117. MainSceneController.Instance.mainUI?.RestWidgetHeroPos(this);
  118. }
  119. private async Task OpenHeroDetailPanel()
  120. {
  121. // HeroDetailPanel heroDetailPanel = UIManager.Instance.GetComponent<HeroDetailPanel>();
  122. // if (heroDetailPanel == null)
  123. // {
  124. // heroDetailPanel = await UIManager.Instance.LoadAndOpenPanel<HeroDetailPanel>(Callback);
  125. // }
  126. HeroDetailPanel heroDetailPanel =
  127. await UIManager.Instance.LoadAndOpenPanel<HeroDetailPanel>(Callback, UILayer.Top, isFullUI: true);
  128. heroDetailPanel.InitHeroDetailPanel(heroInfo);
  129. }
  130. private void Callback(HeroDetailPanel obj)
  131. {
  132. LogTool.Log("HeroDetailPanel 加载完成");
  133. }
  134. public HeroInfo heroInfo;
  135. /// <summary>
  136. ///
  137. /// </summary>
  138. /// <param name="heroInfo"></param>
  139. public void InitHero(HeroInfo heroInfo)
  140. {
  141. this.heroInfo = heroInfo;
  142. // lv.text = heroInfo.level.Value.ToString();
  143. iconHero.icon_name = heroInfo.modelConfig.headicon;
  144. // iconHero.SetNativeSize();
  145. iconZhiYe.icon_name = heroInfo.iconZhiYe;
  146. // HeroUITools.SetStarShow(stars, heroInfo.star.Value);
  147. SetDynamicData();
  148. }
  149. public void UpdateWidgetUI(HeroInfo heroInfo)
  150. {
  151. this.heroInfo = heroInfo;
  152. SetDynamicData();
  153. }
  154. public void SetDynamicData()
  155. {
  156. lv.text = heroInfo.level.Value.ToString();
  157. HeroUITools.SetStarShow(stars, heroInfo.star.Value);
  158. }
  159. }
  160. }