WidgetHero.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System.Threading.Tasks;
  2. using Fort23.UTool;
  3. using GameLogic.Hero;
  4. using UnityEngine;
  5. using UnityEngine.UIElements;
  6. namespace Fort23.Mono
  7. {
  8. [UIBinding(prefab = "Widget_Hero" )]
  9. public partial class WidgetHero : UIComponent
  10. {
  11. private void Init()
  12. {
  13. }
  14. public override void AddEvent()
  15. {
  16. }
  17. public override void DelEvent()
  18. {
  19. }
  20. public override void AddButtonEvent()
  21. {
  22. LogTool.Log("添加英雄点击事件");
  23. btnHero.onClick.AddListener(OnHeroClick);
  24. }
  25. private async void OnHeroClick()
  26. {
  27. LogTool.Log("点击英雄");
  28. await OpenHeroDetailPanel();
  29. }
  30. private async Task OpenHeroDetailPanel()
  31. {
  32. HeroDetailPanel heroDetailPanel = UIManager.Instance.GetComponent<HeroDetailPanel>();
  33. if (heroDetailPanel == null)
  34. {
  35. await UIManager.Instance.LoadAndOpenPanel<HeroDetailPanel>(Callback);
  36. }
  37. heroDetailPanel.InitHeroDetailPanel();
  38. }
  39. private void Callback(HeroDetailPanel obj)
  40. {
  41. LogTool.Log("HeroDetailPanel 加载完成");
  42. }
  43. /// <summary>
  44. ///
  45. /// </summary>
  46. /// <param name="heroInfo"></param>
  47. public void InitHero(HeroInfo heroInfo)
  48. {
  49. lv.text = heroInfo.lv.ToString();
  50. // 最大星级展示个数(6星,只显示一颗星星,换颜色)
  51. int maxShowStar = 5;
  52. // 计算 当前星级 应该用什么星星的表现
  53. int group = (heroInfo.star - 1) / maxShowStar;
  54. int i = 1;
  55. foreach (var star in stars)
  56. {
  57. GameObject starObj = star as GameObject;
  58. SetStarImg(group, starObj);
  59. if (heroInfo.star >= i)
  60. {
  61. starObj.SetActive(true);
  62. }
  63. else
  64. {
  65. starObj.SetActive(false);
  66. }
  67. i++;
  68. }
  69. }
  70. private void SetStarImg(int group, GameObject starObj)
  71. {
  72. Image image = starObj.GetComponent<Image>();
  73. // 执行对应的逻辑 (0)GradeIcon_Star_s_Yellow (1)GradeIcon_Star_s_Premium
  74. switch (group)
  75. {
  76. case 0: // n = 1~5
  77. image.name = "GradeIcon_Star_s_Yellow";
  78. break;
  79. case 1: // n = 6~10
  80. image.name = "GradeIcon_Star_s_Premium";
  81. break;
  82. default: // 其他情况
  83. image.name = "GradeIcon_Star_s_Yellow";
  84. break;
  85. }
  86. }
  87. }
  88. }