FriendItem.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using LitJson;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. public class FriendItemLabel
  8. {
  9. public static string FriendItem = "FriendItem";
  10. public static string Nickname = "Nickname";
  11. public static string Content = "Content";
  12. public static string Frame = "Frame";
  13. public static string VisitButton = "VisitButton";
  14. public static string VisitButtonTitle = "VisitButtonTitle";
  15. public static string VisitImagePlus = "VisitImagePlus";
  16. public static string VerticalGroup = "VerticalGroup";
  17. public static string SendMessageButtonParent = "SendMessageButtonParent";
  18. public static string SendMessageButton = "SendMessageButton";
  19. public static string NewMessageFlagImage = "NewMessageFlagImage";
  20. public static string SendMessageButtonText = "SendMessageButtonText";
  21. public static string DeleteButtonParent = "DeleteButtonParent";
  22. public static string DeleteButton = "DeleteButton";
  23. public static string DeleteButtonText = "DeleteButtonText";
  24. public static string NewMessageText = "NewMessageFlagText";
  25. public static string NewMessageImage = "NewMessageFlag";
  26. }
  27. public class FriendItem : VirtualScrollRectItem
  28. {
  29. #region Config
  30. public Text NicknameTitle;
  31. public Text ContentTitle;
  32. public Text VisitButtonTitle;
  33. public Text SendMessageButtonText;
  34. public Text DeleteButtonText;
  35. public Text NewMessageText;
  36. public Image NewMessageImage;
  37. public Image NewMessageFlagImage;
  38. public Button VisitButton;
  39. public Button SendMessageButton;
  40. public Button DeleteButton;
  41. public AccountData AccountData;
  42. #endregion
  43. public override bool Init()
  44. {
  45. if (base.Init())
  46. {
  47. return true;
  48. }
  49. Dictionary<string, Transform> childDictionary = new Dictionary<string, Transform>();
  50. Auxiliary.CompileDic(transform, childDictionary);
  51. NicknameTitle = childDictionary[FriendItemLabel.Nickname].GetComponent<Text>();
  52. ContentTitle = childDictionary[FriendItemLabel.Content].GetComponent<Text>();
  53. VisitButtonTitle = childDictionary[FriendItemLabel.VisitButtonTitle].GetComponent<Text>();
  54. SendMessageButtonText = childDictionary[FriendItemLabel.SendMessageButtonText].GetComponent<Text>();
  55. DeleteButtonText = childDictionary[FriendItemLabel.DeleteButtonText].GetComponent<Text>();
  56. NewMessageText = childDictionary[FriendItemLabel.NewMessageText].GetComponent<Text>();
  57. NewMessageImage = childDictionary[FriendItemLabel.NewMessageImage].GetComponent<Image>();
  58. NewMessageFlagImage = childDictionary[FriendItemLabel.NewMessageFlagImage].GetComponent<Image>();
  59. VisitButton = childDictionary[FriendItemLabel.VisitButton].GetComponent<Button>();
  60. SendMessageButton = childDictionary[FriendItemLabel.SendMessageButton].GetComponent<Button>();
  61. DeleteButton = childDictionary[FriendItemLabel.DeleteButton].GetComponent<Button>();
  62. LanguageManager.Add(SendMessageButtonText, new MulLanStr(LanguageLabel.FriendItem__SendMessageButtonText));
  63. LanguageManager.Add(DeleteButtonText, new MulLanStr(LanguageLabel.FriendItem__DeleteButtonText));
  64. VisitButton.onClick.AddListener(OnVisitButtonClick);
  65. SendMessageButton.onClick.AddListener(OnSendMessageButtonClick);
  66. DeleteButton.onClick.AddListener(OnDeleteButtonClick);
  67. VisitButtonTitle.text = ResourceManager.Get<Text>(CanvasLabel.C_CostLab).text;
  68. Manager.OnLevelChange += level =>
  69. {
  70. VisitButtonTitle.text = ResourceManager.Get<Text>(CanvasLabel.C_CostLab).text;
  71. };
  72. MessagePanel.OnHaveNewMessage += OnHaveNewMessage;
  73. MessagePanel.OnDontHaveNewMessage += OnDontHaveNewMessage;
  74. return false;
  75. }
  76. public void Reset(AccountData accountData)
  77. {
  78. AccountData = accountData;
  79. NicknameTitle.text = accountData.Nickname;
  80. ContentTitle.text = HttpManager.GetTimespanAndTransfer(accountData.LastLoginDate);
  81. }
  82. public void OnVisitButtonClick()
  83. {
  84. if (SFSManager.PlazaRoomController.JoinedPlazaRoom)
  85. {
  86. SFSManager.PlazaRoomController.TryExitToVisit
  87. (
  88. AccountData.SerialNumber,
  89. () =>
  90. {
  91. FriendPanel.CloseRootFriendPanel();
  92. PlazaroomMemberPanel.ClosePanel();
  93. }
  94. );
  95. }
  96. else
  97. {
  98. FriendPanel.CloseRootFriendPanel();
  99. CounterAction counterAction = new CounterAction(FriendPanel.OpenRootFriendPanel);
  100. counterAction.Bind(ref VisitManager.OnExitVisteeGarden);
  101. VisitManager.Visit(ConfigSource.SerialNumber, AccountData.SerialNumber);
  102. }
  103. }
  104. public void OnDeleteButtonClick()
  105. {
  106. Bubble.Show
  107. (
  108. null,
  109. Language.GetStr(LanguageLabel.FriendItem__DeleteWarning),
  110. null,
  111. null,
  112. () =>
  113. {
  114. DeleteButton.interactable = false;
  115. HttpManager.DeleteBuddy(AccountData.SerialNumber, DeleteFriendSucceed, DeleteFriendFailed);
  116. }
  117. );
  118. if (FriendPanel.ApplicantItems.Count == 0)
  119. {
  120. ConfigManager.SaveStringToConfig(PlayerConfigLabel.LastApplicantSerialNumber, "");
  121. }
  122. }
  123. public void DeleteFriendFailed()
  124. {
  125. DeleteButton.interactable = true;
  126. Bubble.Show(null, Language.GetStr(LanguageLabel.ApplicantItem__ConnectError));
  127. }
  128. public void DeleteFriendSucceed()
  129. {
  130. DeleteButton.interactable = true;
  131. FriendPanel.SaveFriendItem(this);
  132. FriendPanel.DeleteLastPrivateMessageDate(AccountData.SerialNumber);
  133. }
  134. public void OnSendMessageButtonClick()
  135. {
  136. FriendPanel.CloseFriendPanel();
  137. MessagePanel.OpenPanel(AccountData);
  138. CounterAction counterAction = new CounterAction(FriendPanel.OpenFriendPanel);
  139. counterAction.Bind(ref MessagePanel.OnPanelClosed);
  140. }
  141. public void OnHaveNewMessage(string serialNumber)
  142. {
  143. if (serialNumber == AccountData.SerialNumber)
  144. {
  145. NewMessageFlagImage.SetActive(true);
  146. NewMessageImage.SetActive(true);
  147. }
  148. FriendPanel.UpdateFriendButtonOutlineStatus();
  149. }
  150. public void OnDontHaveNewMessage(string serialNumber)
  151. {
  152. if (serialNumber == AccountData.SerialNumber)
  153. {
  154. NewMessageFlagImage.SetActive(false);
  155. NewMessageImage.SetActive(false);
  156. }
  157. FriendPanel.UpdateFriendButtonOutlineStatus();
  158. }
  159. }