BadgeChooseView.cs 4.3 KB

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