FriendItem.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  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. }
  25. public class FriendItem : VirtualScrollRectItem
  26. {
  27. #region Config
  28. public Text NicknameTitle;
  29. public Text ContentTitle;
  30. public Text VisitButtonTitle;
  31. public Text SendMessageButtonText;
  32. public Text DeleteButtonText;
  33. public Image NewMessageFlagImage;
  34. public Button VisitButton;
  35. public Button SendMessageButton;
  36. public Button DeleteButton;
  37. public AccountData AccountData;
  38. #endregion
  39. public override bool Init()
  40. {
  41. if (base.Init())
  42. {
  43. return true;
  44. }
  45. Dictionary<string, Transform> childDictionary = new Dictionary<string, Transform>();
  46. Auxiliary.CompileDic(transform, childDictionary);
  47. NicknameTitle = childDictionary[FriendItemLabel.Nickname].GetComponent<Text>();
  48. ContentTitle = childDictionary[FriendItemLabel.Content].GetComponent<Text>();
  49. VisitButtonTitle = childDictionary[FriendItemLabel.VisitButtonTitle].GetComponent<Text>();
  50. SendMessageButtonText = childDictionary[FriendItemLabel.SendMessageButtonText].GetComponent<Text>();
  51. DeleteButtonText = childDictionary[FriendItemLabel.DeleteButtonText].GetComponent<Text>();
  52. NewMessageFlagImage = childDictionary[FriendItemLabel.NewMessageFlagImage].GetComponent<Image>();
  53. VisitButton = childDictionary[FriendItemLabel.VisitButton].GetComponent<Button>();
  54. SendMessageButton = childDictionary[FriendItemLabel.SendMessageButton].GetComponent<Button>();
  55. DeleteButton = childDictionary[FriendItemLabel.DeleteButton].GetComponent<Button>();
  56. LanguageManager.Add(SendMessageButtonText, new MulLanStr(LanguageLabel.FriendItem__SendMessageButtonText));
  57. LanguageManager.Add(DeleteButtonText, new MulLanStr(LanguageLabel.FriendItem__DeleteButtonText));
  58. VisitButton.onClick.AddListener(OnVisitButtonClick);
  59. SendMessageButton.onClick.AddListener(OnSendMessageButtonClick);
  60. DeleteButton.onClick.AddListener(OnDeleteButtonClick);
  61. VisitButtonTitle.text = ResourceManager.Get<Text>(CanvasLabel.C_CostLab).text;
  62. Manager.OnLevelChange += level =>
  63. {
  64. VisitButtonTitle.text = ResourceManager.Get<Text>(CanvasLabel.C_CostLab).text;
  65. };
  66. MessagePanel.OnHaveNewMessage += OnHaveNewMessage;
  67. MessagePanel.OnDontHaveNewMessage += OnDontHaveNewMessage;
  68. return false;
  69. }
  70. public void Reset(AccountData accountData)
  71. {
  72. AccountData = accountData;
  73. NicknameTitle.text = accountData.Nickname;
  74. ContentTitle.text = HttpManager.GetTimespanAndTransfer(accountData.LastLoginDate);
  75. }
  76. public void OnVisitButtonClick()
  77. {
  78. if (SFSManager.PlazaRoomController.JoinedPlazaRoom)
  79. {
  80. SFSManager.PlazaRoomController.TryExitToVisit
  81. (
  82. AccountData.SerialNumber,
  83. () =>
  84. {
  85. FriendPanel.CloseRootFriendPanel();
  86. PlazaroomMemberPanel.ClosePanel();
  87. }
  88. );
  89. }
  90. else
  91. {
  92. FriendPanel.CloseRootFriendPanel();
  93. CounterAction counterAction = new CounterAction(FriendPanel.OpenRootFriendPanel);
  94. counterAction.Bind(ref VisitManager.OnExitVisteeGarden);
  95. VisitManager.Visit(ConfigSource.SerialNumber, AccountData.SerialNumber);
  96. }
  97. }
  98. public void OnDeleteButtonClick()
  99. {
  100. Bubble.Show
  101. (
  102. null,
  103. Language.GetStr(LanguageLabel.FriendItem__DeleteWarning),
  104. null,
  105. null,
  106. () =>
  107. {
  108. DeleteButton.interactable = false;
  109. HttpManager.DeleteBuddy(AccountData.SerialNumber, DeleteFriendSucceed, DeleteFriendFailed);
  110. }
  111. );
  112. }
  113. public void DeleteFriendFailed()
  114. {
  115. DeleteButton.interactable = true;
  116. Bubble.Show(null, Language.GetStr(LanguageLabel.ApplicantItem__ConnectError));
  117. }
  118. public void DeleteFriendSucceed()
  119. {
  120. DeleteButton.interactable = true;
  121. FriendPanel.SaveFriendItem(this);
  122. FriendPanel.DeleteLastPrivateMessageDate(AccountData.SerialNumber);
  123. }
  124. public void OnSendMessageButtonClick()
  125. {
  126. FriendPanel.CloseFriendPanel();
  127. MessagePanel.OpenPanel(AccountData);
  128. CounterAction counterAction = new CounterAction(FriendPanel.OpenFriendPanel);
  129. counterAction.Bind(ref MessagePanel.OnPanelClosed);
  130. }
  131. public void OnHaveNewMessage(string serialNumber)
  132. {
  133. if (serialNumber == AccountData.SerialNumber)
  134. {
  135. NewMessageFlagImage.SetActive(true);
  136. }
  137. FriendPanel.UpdateFriendButtonOutlineStatus();
  138. }
  139. public void OnDontHaveNewMessage(string serialNumber)
  140. {
  141. if (serialNumber == AccountData.SerialNumber)
  142. {
  143. NewMessageFlagImage.SetActive(false);
  144. }
  145. FriendPanel.UpdateFriendButtonOutlineStatus();
  146. }
  147. }