BadgeChooseView.cs 4.1 KB

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