PlazaroomMemberItem.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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>(ObjectLabel.C_CostLab).text;
  72. VisitButton.onClick.AddListener(OnVisitButtonClick);
  73. AddFriendButton.onClick.AddListener(OnAddFriendButtonClick);
  74. SendMessageButton.onClick.AddListener(OnSendMessageButtonClick);
  75. FriendPanel.OnFriendListRefresh += RefreshRelationship;
  76. }
  77. public void Reset(AccountData accountData, DateTime joinedTime)
  78. {
  79. Init();
  80. AccountData = accountData;
  81. JoinedRoomTime = joinedTime;
  82. NicknameTitle.text = accountData.Nickname;
  83. ContentTitle.text = GetContent();
  84. AddFriendButton.SetActive(true);
  85. AddFriendButton.interactable = true;
  86. SendMessageButton.SetActive(false);
  87. RefreshRelationship(FriendPanel.FriendAccountDatas);
  88. }
  89. private string GetContent()
  90. {
  91. int minutes = (int)HttpManager.CurrentDateTime.Subtract(JoinedRoomTime).TotalMinutes;
  92. if (minutes == 0)
  93. {
  94. return Language.GetStr(LanguageLabel.UI__AE_JoinedTime1);
  95. }
  96. else if (minutes > 0)
  97. {
  98. string content = Language.GetStr(LanguageLabel.UI__AE_JoinedTime0);
  99. return content.Replace(TransferLabel.Value, minutes.ToString());
  100. }
  101. else
  102. {
  103. throw new Exception(minutes.ToString());
  104. }
  105. }
  106. public void RefreshRelationship(List<AccountData> accountDatas)
  107. {
  108. if (IsFriend(accountDatas))
  109. {
  110. AddFriendButton.SetActive(false);
  111. SendMessageButton.SetActive(true);
  112. }
  113. }
  114. public bool IsFriend(List<AccountData> accountDatas)
  115. {
  116. return accountDatas.MyContains(item => AccountData.SerialNumber == item.SerialNumber);
  117. }
  118. private void OnVisitButtonClick()
  119. {
  120. SFSManager.PlazaRoomController.TryExitToVisit(AccountData.SerialNumber, OnExitToVisit);
  121. }
  122. private void OnExitToVisit()
  123. {
  124. PlazaroomMemberPanel.ClosePanel();
  125. }
  126. private void OnAddFriendButtonClick()
  127. {
  128. if (!FriendPanel.IsFriendFull(true))
  129. {
  130. AudioManager.PlayClip(ResourceLabel.BtnClip);
  131. AddFriendButton.interactable = false;
  132. HttpManager.ApplyBuddy(AccountData.SerialNumber, SendApplySucceed, SendApplyFailed);
  133. }
  134. }
  135. private void SendApplyFailed()
  136. {
  137. AddFriendButton.interactable = true;
  138. Bubble.Show(null, Language.GetStr(LanguageLabel.PlazaroomMemberItem__ConnectError));
  139. }
  140. private void SendApplySucceed()
  141. {
  142. AddFriendButton.interactable = true;
  143. Bubble.Show(null, Language.GetStr(LanguageLabel.PlazaroomMemberItem__SendApplySucceed));
  144. AddFriendButton.SetActive(false);
  145. }
  146. private void OnSendMessageButtonClick()
  147. {
  148. AudioManager.PlayClip(ResourceLabel.BtnClip);
  149. MessagePanel.OpenPanel(AccountData);
  150. }
  151. }