AddFriendPanel.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. public class AccountData
  7. {
  8. public string Nickname;
  9. public string SerialNumber;
  10. public DateTime LastLoginDate;
  11. public AccountData(string nickname, string serialNumber, string dateString = null)
  12. {
  13. Nickname = nickname;
  14. SerialNumber = serialNumber;
  15. if (dateString != null)
  16. {
  17. LastLoginDate = DateTime.Parse(dateString);
  18. }
  19. }
  20. }
  21. public class AddFriendPanel : Regist
  22. {
  23. #region Config
  24. public static Text Title;
  25. public static Text SearchButtonTitle;
  26. public static Text TipText;
  27. public static Text NicknameText;
  28. public static Text ChangeButtonUnderline;
  29. public static Text ApplyButtonTitle;
  30. public static Text ChangeButtonTitle;
  31. public static Button ApplyButton;
  32. public static Button SearchButton;
  33. public static Button ChangeButton;
  34. public static Button CloseButton;
  35. public static Transform AddFriendPanelMask;
  36. public static InputField InputField;
  37. private static AccountData CurrentRecommendData;
  38. private static List<AccountData> RecommendDatas = new List<AccountData>();
  39. #endregion
  40. public override void ThirdInit()
  41. {
  42. RefreshRecommendBuddyList();
  43. }
  44. public override void RegistReference()
  45. {
  46. Title = ResourceManager.Get<Text>(ObjectLabel.AG_Title);
  47. SearchButtonTitle = ResourceManager.Get<Text>(ObjectLabel.AG_SearchButtonTitle);
  48. TipText = ResourceManager.Get<Text>(ObjectLabel.AG_TipText);
  49. NicknameText = ResourceManager.Get<Text>(ObjectLabel.AG_NicknameText);
  50. ChangeButtonUnderline = ResourceManager.Get<Text>(ObjectLabel.AG_ChangeButtonUnderline);
  51. ApplyButtonTitle = ResourceManager.Get<Text>(ObjectLabel.AG_ApplyButtonTitle);
  52. ApplyButton = ResourceManager.Get<Button>(ObjectLabel.AG_ApplyButton);
  53. SearchButton = ResourceManager.Get<Button>(ObjectLabel.AG_SearchButton);
  54. ChangeButton = ResourceManager.Get<Button>(ObjectLabel.AG_ChangeButton);
  55. CloseButton = ResourceManager.Get<Button>(ObjectLabel.AG_CloseButton);
  56. AddFriendPanelMask = ResourceManager.Get(ObjectLabel.AG_AddFriendPanelMask);
  57. InputField = ResourceManager.Get<InputField>(ObjectLabel.AG_InputField);
  58. ChangeButtonTitle = ChangeButton.GetComponent<Text>();
  59. AddFriendPanelMask.CreateTweenCG(0, 1, 0.25f, false, true, Curve.EaseOutQuad);
  60. LanguageManager.Add(Title, new MulLanStr(LanguageLabel.UI__AG_Title));
  61. LanguageManager.Add(SearchButtonTitle, new MulLanStr(LanguageLabel.UI__AG_SearchButtonTitle));
  62. LanguageManager.Add(ApplyButtonTitle, new MulLanStr(LanguageLabel.UI__AG_ApplyButtonTitle));
  63. ApplyButton.onClick.AddListener(OnApplyButtonClick);
  64. SearchButton.onClick.AddListener(Search);
  65. ChangeButton.onClick.AddListener(OnChangeButtonClick);
  66. CloseButton.onClick.AddListener(ClosePanel);
  67. }
  68. private static void ResetRecommendStatus()
  69. {
  70. if (RecommendDatas.Count > 0)
  71. {
  72. NicknameText.text = RecommendDatas[0].Nickname;
  73. CurrentRecommendData = RecommendDatas[0];
  74. ChangeButton.interactable = true;
  75. }
  76. else
  77. {
  78. NicknameText.text = "";
  79. CurrentRecommendData = null;
  80. ChangeButton.interactable = false;
  81. }
  82. }
  83. private static void RefreshRecommendBuddyList()
  84. {
  85. HttpManager.GetRecommendBuddyList(RefreshRecommendSucceedCallback, () => { });
  86. }
  87. private static void RefreshRecommendSucceedCallback(List<AccountData> accountDatas)
  88. {
  89. RecommendDatas = accountDatas;
  90. }
  91. public static void OpenPanel()
  92. {
  93. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle0);
  94. ChangeButtonTitle.text = Language.GetStr(LanguageLabel.UI__AG_ChangeButtonTitle);
  95. ResetRecommendStatus();
  96. float preferredWidth = ChangeButtonTitle.preferredWidth;
  97. float underlineWidth = ChangeButtonUnderline.rectTransform.rect.width;
  98. float underlineScale = preferredWidth / underlineWidth;
  99. ChangeButtonUnderline.transform.SetLocalScaleX(underlineScale);
  100. AddFriendPanelMask.TweenForCG();
  101. }
  102. public static void ClosePanel()
  103. {
  104. AudioManager.PlayClip(ResourceLabel.CloseClip);
  105. AddFriendPanelMask.TweenBacCG();
  106. }
  107. private static void Search()
  108. {
  109. if (string.IsNullOrEmpty(InputField.text))
  110. {
  111. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_SearchNameEmpty));
  112. return;
  113. }
  114. AudioManager.PlayClip(ResourceLabel.BtnClip);
  115. ApplyButton.interactable = false;
  116. HttpManager.SearchBuddyByNickname(InputField.text, OnSearchSucceed, OnSearchFailed);
  117. InputField.text = "";
  118. }
  119. private static void OnSearchFailed()
  120. {
  121. ApplyButton.interactable = true;
  122. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle1);
  123. ResetRecommendStatus();
  124. }
  125. private static void OnSearchSucceed(List<AccountData> accountDatas)
  126. {
  127. if (accountDatas.Count > 0)
  128. {
  129. ApplyButton.interactable = true;
  130. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle2);
  131. CurrentRecommendData = accountDatas[0];
  132. NicknameText.text = CurrentRecommendData.Nickname;
  133. ChangeButton.interactable = true;
  134. }
  135. else
  136. {
  137. OnSearchFailed();
  138. }
  139. }
  140. private void OnApplyButtonClick()
  141. {
  142. if (CurrentRecommendData == null)
  143. {
  144. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_SearchNameEmpty));
  145. return;
  146. }
  147. if (!FriendPanel.IsFriendFull(true))
  148. {
  149. ApplyButton.interactable = false;
  150. AudioManager.PlayClip(ResourceLabel.BtnClip);
  151. HttpManager.ApplyBuddy(CurrentRecommendData.SerialNumber, ApplySucceed, ApplyFailed);
  152. }
  153. }
  154. private void ApplySucceed()
  155. {
  156. ApplyButton.interactable = true;
  157. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_SendApplySucceed));
  158. RecommendDatas.Remove(CurrentRecommendData);
  159. ResetRecommendStatus();
  160. }
  161. private void ApplyFailed()
  162. {
  163. ApplyButton.interactable = true;
  164. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_ConnectError));
  165. }
  166. private void OnChangeButtonClick()
  167. {
  168. AudioManager.PlayClip(ResourceLabel.BtnClip);
  169. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle0);
  170. CurrentRecommendData = RecommendDatas.Roll();
  171. NicknameText.text = CurrentRecommendData.Nickname;
  172. }
  173. }