BadgeChooseView.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. using System.Collections;
  2. using UnityEngine;
  3. using UI.RoleInfo;
  4. using FairyGUI;
  5. using System.Collections.Generic;
  6. using System.Threading.Tasks;
  7. namespace GFGGame
  8. {
  9. public class BadgeChooseView : BaseWindow
  10. {
  11. private UI_BadgeChooseUI _ui;
  12. private List<ItemCfg> _badgeList;
  13. private int selectedID;
  14. public override void Dispose()
  15. {
  16. if (_ui != null)
  17. {
  18. _ui.Dispose();
  19. }
  20. _ui = null;
  21. base.Dispose();
  22. }
  23. protected override void OnInit()
  24. {
  25. base.OnInit();
  26. packageName = UI_RoleInfoUI.PACKAGE_NAME;
  27. _ui = UI_BadgeChooseUI.Create();
  28. this.viewCom = _ui.target;
  29. isfullScreen = true;
  30. isReturnView = true;
  31. _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("bg_hzzs");
  32. _ui.m_btnback.onClick.Add(Hide);
  33. _ui.m_list.itemRenderer = OnRenderItem;
  34. _badgeList = ItemCfgArray.Instance.GetCfgsByitemType(ConstItemType.BADGE);
  35. }
  36. protected override void OnShown()
  37. {
  38. base.OnShown();
  39. selectedID = (viewData == null ? -1 : (int)viewData);
  40. _ui.m_list.numItems = _badgeList.Count;
  41. _ui.m_list.scrollPane.ScrollTop();
  42. }
  43. protected override void OnHide()
  44. {
  45. base.OnHide();
  46. }
  47. protected override void AddEventListener()
  48. {
  49. base.AddEventListener();
  50. }
  51. protected override void RemoveEventListener()
  52. {
  53. base.RemoveEventListener();
  54. }
  55. private void OnRenderItem(int index, GObject gObject)
  56. {
  57. gObject.data = _badgeList[index].id;
  58. UI_BadgeItem badgeItem = UI_BadgeItem.Proxy(gObject);
  59. badgeItem.m_name.text = _badgeList[index].name;
  60. badgeItem.m_iconImg.url = ResPathUtil.GetIconPath(_badgeList[index]);
  61. //badgeItem.m_iconImg.url = "ui://RoleInfo/linshj1_l";
  62. if (RoleDataManager.HaveBadge(_badgeList[index].id))
  63. {
  64. // 显示 卸下
  65. if (_badgeList[index].id == selectedID)
  66. {
  67. badgeItem.m_type.SetSelectedIndex(0);
  68. gObject.onClick.Set(RemoveBadge);
  69. }
  70. // 显示 已选中
  71. else if(RoleDataManager.badgeDatas.Contains(_badgeList[index].id))
  72. {
  73. badgeItem.m_type.SetSelectedIndex(1);
  74. gObject.onClick.Set(()=>
  75. {
  76. PromptController.Instance.ShowFloatTextPrompt("该徽章已在展示中");
  77. });
  78. }
  79. else
  80. {
  81. badgeItem.m_type.SetSelectedIndex(2);
  82. gObject.onClick.Set(SetBadge);
  83. }
  84. }
  85. else
  86. {
  87. badgeItem.m_type.SetSelectedIndex(3);
  88. gObject.onClick.Set(OnClickUnHaveItem);
  89. }
  90. UI_BadgeItem.ProxyEnd();
  91. }
  92. private void RemoveBadge()
  93. {
  94. RoleDataManager.badgeDatas.Remove(selectedID);
  95. UpdateBadgeList();
  96. }
  97. private void SetBadge(EventContext eventContext)
  98. {
  99. int id = (int)(eventContext.sender as GObject).data;
  100. // 点击空位进来的
  101. if(selectedID == -1)
  102. {
  103. RoleDataManager.badgeDatas.Add(id);
  104. }
  105. else
  106. {
  107. int index = RoleDataManager.badgeDatas.FindIndex(x => x.Equals(selectedID));
  108. RoleDataManager.badgeDatas[index] = id;
  109. }
  110. UpdateBadgeList();
  111. }
  112. private async Task UpdateBadgeList()
  113. {
  114. await RoleInfoSProxy.ReqSaveBadgeList(RoleDataManager.badgeDatas);
  115. Hide();
  116. }
  117. private void OnClickUnHaveItem(EventContext eventContext)
  118. {
  119. int id = (int)(eventContext.sender as GObject).data;
  120. object[] goBackDatas = ViewManager.GetGoBackDatas(typeof(BadgeChooseView).Name);
  121. object[] sourceDatas = new object[] { id, goBackDatas, 1 };
  122. GoodsItemTipsController.ShowItemTips(id, sourceDatas, false);
  123. }
  124. }
  125. }