AddFriendPanel.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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>(CanvasLabel.AG_Title);
  47. SearchButtonTitle = ResourceManager.Get<Text>(CanvasLabel.AG_SearchButtonTitle);
  48. TipText = ResourceManager.Get<Text>(CanvasLabel.AG_TipText);
  49. NicknameText = ResourceManager.Get<Text>(CanvasLabel.AG_NicknameText);
  50. ChangeButtonUnderline = ResourceManager.Get<Text>(CanvasLabel.AG_ChangeButtonUnderline);
  51. ApplyButtonTitle = ResourceManager.Get<Text>(CanvasLabel.AG_ApplyButtonTitle);
  52. ApplyButton = ResourceManager.Get<Button>(CanvasLabel.AG_ApplyButton);
  53. SearchButton = ResourceManager.Get<Button>(CanvasLabel.AG_SearchButton);
  54. ChangeButton = ResourceManager.Get<Button>(CanvasLabel.AG_ChangeButton);
  55. CloseButton = ResourceManager.Get<Button>(CanvasLabel.AG_CloseButton);
  56. AddFriendPanelMask = ResourceManager.Get(CanvasLabel.AG_AddFriendPanelMask);
  57. InputField = ResourceManager.Get<InputField>(CanvasLabel.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. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle0);
  91. }
  92. public static void OpenPanel()
  93. {
  94. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle0);
  95. ChangeButtonTitle.text = Language.GetStr(LanguageLabel.UI__AG_ChangeButtonTitle);
  96. ResetRecommendStatus();
  97. float preferredWidth = ChangeButtonTitle.preferredWidth;
  98. float underlineWidth = ChangeButtonUnderline.rectTransform.rect.width;
  99. float underlineScale = preferredWidth / underlineWidth;
  100. ChangeButtonUnderline.transform.SetLocalScaleX(underlineScale);
  101. AddFriendPanelMask.TweenForCG();
  102. }
  103. public static void ClosePanel()
  104. {
  105. AudioManager.PlayClip(ResourceLabel.CloseClip);
  106. AddFriendPanelMask.TweenBacCG();
  107. RefreshRecommendBuddyList();
  108. InputField.text = "";
  109. }
  110. private static void Search()
  111. {
  112. if (string.IsNullOrEmpty(InputField.text))
  113. {
  114. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_SearchNameEmpty));
  115. return;
  116. }
  117. AudioManager.PlayClip(ResourceLabel.BtnClip);
  118. ApplyButton.interactable = false;
  119. HttpManager.SearchBuddyByNickname(InputField.text, OnSearchSucceed, OnSearchFailed);
  120. //InputField.text = "";
  121. }
  122. private static void OnSearchFailed()
  123. {
  124. ApplyButton.interactable = true;
  125. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle1);
  126. ResetRecommendStatus();
  127. }
  128. private static void OnSearchSucceed(List<AccountData> accountDatas)
  129. {
  130. if (accountDatas.Count > 0)
  131. {
  132. ApplyButton.interactable = true;
  133. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle2);
  134. //Debug.Log(accountDatas.Count);
  135. //for (int i = 0; i < accountDatas.Count; i++)
  136. //{
  137. // Debug.Log(accountDatas[i].Nickname);
  138. // RecommendDatas.Insert(0, accountDatas[i]);
  139. //}
  140. RecommendDatas = accountDatas;
  141. CurrentRecommendData = RecommendDatas[0];
  142. NicknameText.text = CurrentRecommendData.Nickname;
  143. ChangeButton.interactable = true;
  144. }
  145. else
  146. {
  147. OnSearchFailed();
  148. }
  149. }
  150. private void OnApplyButtonClick()
  151. {
  152. if (CurrentRecommendData == null)
  153. {
  154. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_SearchNameEmpty));
  155. return;
  156. }
  157. if (!FriendPanel.IsFriendFull(true))
  158. {
  159. ApplyButton.interactable = false;
  160. AudioManager.PlayClip(ResourceLabel.BtnClip);
  161. HttpManager.ApplyBuddy(CurrentRecommendData.SerialNumber, ApplySucceed, ApplyFailed);
  162. }
  163. }
  164. private void ApplySucceed()
  165. {
  166. ApplyButton.interactable = true;
  167. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_SendApplySucceed));
  168. RecommendDatas.Remove(CurrentRecommendData);
  169. ResetRecommendStatus();
  170. }
  171. private void ApplyFailed()
  172. {
  173. ApplyButton.interactable = true;
  174. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_ConnectError));
  175. }
  176. private void OnChangeButtonClick()
  177. {
  178. AudioManager.PlayClip(ResourceLabel.BtnClip);
  179. //TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle0);
  180. CurrentRecommendData = RecommendDatas.Roll();
  181. NicknameText.text = CurrentRecommendData.Nickname;
  182. }
  183. }