AddFriendPanel.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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. InputField.image.sprite = ResourceManager.LoadSprite(ResourceLabel.Expression_InputField, Folder.Scene);
  60. AddFriendPanelMask.CreateTweenCG(0, 1, 0.25f, false, true, Curve.EaseOutQuad);
  61. LanguageManager.Add(Title, new MulLanStr(LanguageLabel.UI__AG_Title));
  62. LanguageManager.Add(SearchButtonTitle, new MulLanStr(LanguageLabel.UI__AG_SearchButtonTitle));
  63. LanguageManager.Add(ApplyButtonTitle, new MulLanStr(LanguageLabel.UI__AG_ApplyButtonTitle));
  64. ApplyButton.onClick.AddListener(OnApplyButtonClick);
  65. SearchButton.onClick.AddListener(Search);
  66. ChangeButton.onClick.AddListener(OnChangeButtonClick);
  67. CloseButton.onClick.AddListener(ClosePanel);
  68. }
  69. private static void ResetRecommendStatus()
  70. {
  71. if (RecommendDatas.Count > 0)
  72. {
  73. NicknameText.text = RecommendDatas[0].Nickname;
  74. CurrentRecommendData = RecommendDatas[0];
  75. ChangeButton.interactable = true;
  76. }
  77. else
  78. {
  79. NicknameText.text = "";
  80. CurrentRecommendData = null;
  81. ChangeButton.interactable = false;
  82. }
  83. }
  84. private static void RefreshRecommendBuddyList()
  85. {
  86. HttpManager.GetRecommendBuddyList(RefreshRecommendSucceedCallback, () => { });
  87. }
  88. private static void RefreshRecommendSucceedCallback(List<AccountData> accountDatas)
  89. {
  90. RecommendDatas = accountDatas;
  91. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle0);
  92. }
  93. public static void OpenPanel()
  94. {
  95. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle0);
  96. ChangeButtonTitle.text = Language.GetStr(LanguageLabel.UI__AG_ChangeButtonTitle);
  97. ResetRecommendStatus();
  98. float preferredWidth = ChangeButtonTitle.preferredWidth;
  99. float underlineWidth = ChangeButtonUnderline.rectTransform.rect.width;
  100. float underlineScale = preferredWidth / underlineWidth;
  101. ChangeButtonUnderline.transform.SetLocalScaleX(underlineScale);
  102. AddFriendPanelMask.TweenForCG();
  103. }
  104. public static void ClosePanel()
  105. {
  106. AudioManager.PlayClip(ResourceLabel.CloseClip);
  107. AddFriendPanelMask.TweenBacCG();
  108. RefreshRecommendBuddyList();
  109. InputField.text = "";
  110. }
  111. private static void Search()
  112. {
  113. if (string.IsNullOrEmpty(InputField.text))
  114. {
  115. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_SearchNameEmpty));
  116. return;
  117. }
  118. AudioManager.PlayClip(ResourceLabel.BtnClip);
  119. ApplyButton.interactable = false;
  120. HttpManager.SearchBuddyByNickname(InputField.text, OnSearchSucceed, OnSearchFailed);
  121. //InputField.text = "";
  122. }
  123. private static void OnSearchFailed()
  124. {
  125. ApplyButton.interactable = true;
  126. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle1);
  127. ResetRecommendStatus();
  128. }
  129. private static void OnSearchSucceed(List<AccountData> accountDatas)
  130. {
  131. if (accountDatas.Count > 0)
  132. {
  133. ApplyButton.interactable = true;
  134. TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle2);
  135. //Debug.Log(accountDatas.Count);
  136. //for (int i = 0; i < accountDatas.Count; i++)
  137. //{
  138. // Debug.Log(accountDatas[i].Nickname);
  139. // RecommendDatas.Insert(0, accountDatas[i]);
  140. //}
  141. RecommendDatas = accountDatas;
  142. CurrentRecommendData = RecommendDatas[0];
  143. NicknameText.text = CurrentRecommendData.Nickname;
  144. ChangeButton.interactable = true;
  145. }
  146. else
  147. {
  148. OnSearchFailed();
  149. }
  150. }
  151. private void OnApplyButtonClick()
  152. {
  153. if (CurrentRecommendData == null)
  154. {
  155. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_SearchNameEmpty));
  156. return;
  157. }
  158. if (!FriendPanel.IsFriendFull(true))
  159. {
  160. ApplyButton.interactable = false;
  161. AudioManager.PlayClip(ResourceLabel.BtnClip);
  162. HttpManager.ApplyBuddy(CurrentRecommendData.SerialNumber, ApplySucceed, ApplyFailed);
  163. }
  164. }
  165. private void ApplySucceed()
  166. {
  167. ApplyButton.interactable = true;
  168. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_SendApplySucceed));
  169. RecommendDatas.Remove(CurrentRecommendData);
  170. ResetRecommendStatus();
  171. }
  172. private void ApplyFailed()
  173. {
  174. ApplyButton.interactable = true;
  175. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__AG_ConnectError));
  176. }
  177. private void OnChangeButtonClick()
  178. {
  179. AudioManager.PlayClip(ResourceLabel.BtnClip);
  180. //TipText.text = Language.GetStr(LanguageLabel.UI__AG_TipTitle0);
  181. CurrentRecommendData = RecommendDatas.Roll();
  182. NicknameText.text = CurrentRecommendData.Nickname;
  183. }
  184. }