PlazaroomMemberPanel.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. public class PlazaroomMemberPanel : Regist
  7. {
  8. #region Config
  9. private static Text PanelTitle;
  10. private static Text ContentTitle;
  11. private static Text FriendFilterTitle;
  12. private static Text NicknameTitle;
  13. private static Text CloseButtonTitle;
  14. private static Image FilterImage;
  15. private static Button CloseButton;
  16. private static Button FriendFilterButton;
  17. private static Button MemberButton;
  18. private static Button FriendListButton;
  19. private static Transform Grid;
  20. private static Transform PanelMask;
  21. public static bool IsFriendFilterOn;
  22. public static Dictionary<string, PlazaroomMemberItem> MemberItemDictionary = new Dictionary<string, PlazaroomMemberItem>();
  23. #endregion
  24. public override void RegistReference()
  25. {
  26. PanelTitle = ResourceManager.Get<Text>(CanvasLabel.AE_PanelTitle);
  27. ContentTitle = ResourceManager.Get<Text>(CanvasLabel.AE_ContentTitle);
  28. FriendFilterTitle = ResourceManager.Get<Text>(CanvasLabel.AE_FriendFilterTitle);
  29. NicknameTitle = ResourceManager.Get<Text>(CanvasLabel.AE_NicknameTitle);
  30. CloseButtonTitle = ResourceManager.Get<Text>(CanvasLabel.AE_CloseButtonTitle);
  31. CloseButton = ResourceManager.Get<Button>(CanvasLabel.AE_CloseButton);
  32. MemberButton = ResourceManager.Get<Button>(CanvasLabel.X_MemberButton);
  33. FriendFilterButton = ResourceManager.Get<Button>(CanvasLabel.AE_FriendFilterButton);
  34. FriendListButton = ResourceManager.Get<Button>(CanvasLabel.AE_FriendListButton);
  35. FilterImage = ResourceManager.Get<Image>(CanvasLabel.AE_FriendFilterIcon);
  36. Grid = ResourceManager.Get(CanvasLabel.AE_Grid);
  37. PanelMask = ResourceManager.Get(CanvasLabel.AE_PlazaroomMemberPanelMask);
  38. LanguageManager.Add(PanelTitle, new MulLanStr(LanguageLabel.UI__AE_Title));
  39. LanguageManager.Add(ContentTitle, new MulLanStr(LanguageLabel.UI__AE_JoinedTimeTitle));
  40. LanguageManager.Add(FriendFilterTitle, new MulLanStr(LanguageLabel.UI__AE_FilterTitle));
  41. LanguageManager.Add(NicknameTitle, new MulLanStr(LanguageLabel.UI__AE_Nickname));
  42. LanguageManager.Add(CloseButtonTitle, new MulLanStr(LanguageLabel.UI__AE_CloseTitle));
  43. PanelMask.CreateTweenCG(0, 1, 0.25f, false, true, Curve.EaseOutQuad);
  44. MemberButton.CreateTweenCG(0, 1, 0.25f, false, true, Curve.EaseOutQuad);
  45. MemberButton.onClick.AddListener(OpenPanel);
  46. CloseButton.onClick.AddListener(ClosePanel);
  47. FriendFilterButton.onClick.AddListener(OnFilterButtonClick);
  48. FriendListButton.onClick.AddListener(OnFriendListButtonClick);
  49. FriendPanel.OnFriendListRefresh += OnFriendListRefresh;
  50. }
  51. public static void OpenPanel()
  52. {
  53. AudioManager.PlayClip(ResourceLabel.BtnClip);
  54. PanelMask.TweenForCG();
  55. MemberButton.TweenBacCG();
  56. }
  57. public static void ClosePanel()
  58. {
  59. AudioManager.PlayClip(ResourceLabel.CloseClip);
  60. PanelMask.TweenBacCG();
  61. MemberButton.TweenForCG();
  62. }
  63. private static void OnFilterButtonClick()
  64. {
  65. AudioManager.PlayClip(ResourceLabel.BtnClip);
  66. if (IsFriendFilterOn)
  67. {
  68. DisableFriendFilter();
  69. }
  70. else
  71. {
  72. EnableFriendFilter();
  73. }
  74. }
  75. public static void EnableFriendFilter()
  76. {
  77. FilterImage.SetActive(true);
  78. IsFriendFilterOn = true;
  79. foreach (var memberItem in MemberItemDictionary.Values)
  80. {
  81. if (!memberItem.IsFriend(FriendPanel.FriendAccountDatas))
  82. {
  83. memberItem.SetActive(false);
  84. }
  85. }
  86. }
  87. public static void DisableFriendFilter()
  88. {
  89. FilterImage.SetActive(false);
  90. IsFriendFilterOn = false;
  91. foreach (var memberItem in MemberItemDictionary.Values)
  92. {
  93. memberItem.SetActive(true);
  94. }
  95. }
  96. private void OnFriendListButtonClick()
  97. {
  98. FriendPanel.OpenRootFriendPanel();
  99. }
  100. public static void AddMemberItem(string nickname, string serialNumber, DateTime joinedTime)
  101. {
  102. PlazaroomMemberItem memberItem = ResourceManager.Get(ResourceLabel.PlazaroomMemberItem, Folder.UI, false, Grid, false, ObjType.PlazaroomMemberItem, typeof(PlazaroomMemberItem)).GetComponent<PlazaroomMemberItem>();
  103. memberItem.transform.SetAsFirstSibling();
  104. AccountData accountData = new AccountData(nickname, serialNumber);
  105. memberItem.Reset(accountData, joinedTime);
  106. MemberItemDictionary.Add(serialNumber, memberItem);
  107. if (IsFriendFilterOn && !memberItem.IsFriend(FriendPanel.FriendAccountDatas))
  108. {
  109. memberItem.SetActive(false);
  110. }
  111. }
  112. public static void SaveMemberItem(string serialNumber)
  113. {
  114. PlazaroomMemberItem memberItem = MemberItemDictionary[serialNumber];
  115. ResourceManager.Save(memberItem);
  116. MemberItemDictionary.Remove(serialNumber);
  117. }
  118. private static void OnFriendListRefresh(List<AccountData> accountDatas)
  119. {
  120. if (IsFriendFilterOn)
  121. {
  122. EnableFriendFilter();
  123. }
  124. }
  125. }