PlazaroomMemberItem.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using Sfs2X;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. public class PlazaroomMemberItemLabel
  8. {
  9. public static string PlazaroomMemberItem = "PlazaroomMemberItem";
  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 AddFriendButton = "AddFriendButton";
  17. public static string AddFriendTitle = "AddFriendTitle";
  18. public static string SendMessageButton = "SendMessageButton";
  19. public static string SendMessageText = "SendMessageText";
  20. public static string NewMessageFlagImage = "NewMessageFlagImage";
  21. }
  22. public class PlazaroomMemberItem : MonoBehaviour
  23. {
  24. #region Config
  25. public Text NicknameTitle;
  26. public Text ContentTitle;
  27. public Text VisitButtonTitle;
  28. public Text AddFriendTitle;
  29. public Text SendMessageText;
  30. public Image NewMessageFlagImage;
  31. public Button VisitButton;
  32. public Button AddFriendButton;
  33. public Button SendMessageButton;
  34. private bool Inited;
  35. private float RefreshTime = 10f;
  36. private float RefreshTimer;
  37. private DateTime JoinedRoomTime;
  38. public AccountData AccountData;
  39. #endregion
  40. private void Update()
  41. {
  42. RefreshTimer += Time.deltaTime;
  43. if (RefreshTimer >= RefreshTime)
  44. {
  45. RefreshTimer = 0;
  46. ContentTitle.text = GetContent();
  47. }
  48. }
  49. private void Init()
  50. {
  51. if (Inited)
  52. {
  53. return;
  54. }
  55. else
  56. {
  57. Inited = true;
  58. }
  59. Dictionary<string, Transform> childDictionary = new Dictionary<string, Transform>();
  60. Auxiliary.CompileDic(transform, childDictionary);
  61. NicknameTitle = childDictionary[PlazaroomMemberItemLabel.Nickname].GetComponent<Text>();
  62. ContentTitle = childDictionary[PlazaroomMemberItemLabel.Content].GetComponent<Text>();
  63. VisitButtonTitle = childDictionary[PlazaroomMemberItemLabel.VisitButtonTitle].GetComponent<Text>();
  64. AddFriendTitle = childDictionary[PlazaroomMemberItemLabel.AddFriendTitle].GetComponent<Text>();
  65. SendMessageText = childDictionary[PlazaroomMemberItemLabel.SendMessageText].GetComponent<Text>();
  66. NewMessageFlagImage = childDictionary[PlazaroomMemberItemLabel.NewMessageFlagImage].GetComponent<Image>();
  67. VisitButton = childDictionary[PlazaroomMemberItemLabel.VisitButton].GetComponent<Button>();
  68. AddFriendButton = childDictionary[PlazaroomMemberItemLabel.AddFriendButton].GetComponent<Button>();
  69. SendMessageButton = childDictionary[PlazaroomMemberItemLabel.SendMessageButton].GetComponent<Button>();
  70. LanguageManager.Add(AddFriendTitle, new MulLanStr(LanguageLabel.PlazaroomMemberItem__AddFriend));
  71. VisitButtonTitle.text = ResourceManager.Get<Text>(CanvasLabel.C_CostLab).text;
  72. VisitButton.onClick.AddListener(OnVisitButtonClick);
  73. AddFriendButton.onClick.AddListener(OnAddFriendButtonClick);
  74. SendMessageButton.onClick.AddListener(OnSendMessageButtonClick);
  75. FriendPanel.OnFriendListRefresh += RefreshRelationship;
  76. MessagePanel.OnHaveNewMessage += OnHaveNewMessage;
  77. MessagePanel.OnDontHaveNewMessage += OnDontHaveNewMessage;
  78. }
  79. public void Reset(AccountData accountData, DateTime joinedTime)
  80. {
  81. Init();
  82. AccountData = accountData;
  83. JoinedRoomTime = joinedTime;
  84. NicknameTitle.text = accountData.Nickname;
  85. ContentTitle.text = GetContent();
  86. AddFriendButton.SetActive(true);
  87. AddFriendButton.interactable = true;
  88. SendMessageButton.SetActive(false);
  89. RefreshRelationship(FriendPanel.FriendAccountDatas);
  90. if (FriendPanel.HaveNewMessage(accountData.SerialNumber))
  91. {
  92. OnHaveNewMessage(accountData.SerialNumber);
  93. }
  94. }
  95. private string GetContent()
  96. {
  97. int minutes = (int)HttpManager.CurrentDateTime.Subtract(JoinedRoomTime).TotalMinutes;
  98. if (minutes == 0)
  99. {
  100. return Language.GetStr(LanguageLabel.UI__AE_JoinedTime1);
  101. }
  102. else if (minutes > 0)
  103. {
  104. string content = Language.GetStr(LanguageLabel.UI__AE_JoinedTime0);
  105. return content.Replace(TransferLabel.Value, minutes.ToString());
  106. }
  107. else
  108. {
  109. throw new Exception(minutes.ToString());
  110. }
  111. }
  112. public void RefreshRelationship(List<AccountData> accountDatas)
  113. {
  114. if (IsFriend(accountDatas))
  115. {
  116. AddFriendButton.SetActive(false);
  117. SendMessageButton.SetActive(true);
  118. }
  119. }
  120. public bool IsFriend(List<AccountData> accountDatas)
  121. {
  122. return accountDatas.MyContains(item => AccountData.SerialNumber == item.SerialNumber);
  123. }
  124. private void OnVisitButtonClick()
  125. {
  126. SFSManager.PlazaRoomController.TryExitToVisit(AccountData.SerialNumber, OnExitToVisit);
  127. }
  128. private void OnExitToVisit()
  129. {
  130. PlazaroomMemberPanel.ClosePanel();
  131. }
  132. private void OnAddFriendButtonClick()
  133. {
  134. if (!FriendPanel.IsFriendFull(true))
  135. {
  136. AudioManager.PlayClip(ResourceLabel.BtnClip);
  137. AddFriendButton.interactable = false;
  138. HttpManager.ApplyBuddy(AccountData.SerialNumber, SendApplySucceed, SendApplyFailed);
  139. }
  140. }
  141. private void SendApplyFailed()
  142. {
  143. AddFriendButton.interactable = true;
  144. Bubble.Show(null, Language.GetStr(LanguageLabel.PlazaroomMemberItem__ConnectError));
  145. }
  146. private void SendApplySucceed()
  147. {
  148. AddFriendButton.interactable = true;
  149. Bubble.Show(null, Language.GetStr(LanguageLabel.PlazaroomMemberItem__SendApplySucceed));
  150. AddFriendButton.SetActive(false);
  151. }
  152. private void OnSendMessageButtonClick()
  153. {
  154. AudioManager.PlayClip(ResourceLabel.BtnClip);
  155. MessagePanel.OpenPanel(AccountData);
  156. }
  157. public void OnHaveNewMessage(string serialNumber)
  158. {
  159. if (serialNumber == AccountData.SerialNumber)
  160. {
  161. NewMessageFlagImage.SetActive(true);
  162. }
  163. }
  164. public void OnDontHaveNewMessage(string serialNumber)
  165. {
  166. if (serialNumber == AccountData.SerialNumber)
  167. {
  168. NewMessageFlagImage.SetActive(false);
  169. }
  170. }
  171. }