BadgeChooseView.cs 4.3 KB

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