BaseComment.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Text;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. using Random = System.Random;
  7. public class BaseComment : Regist
  8. {
  9. #region Config
  10. public Text Title;
  11. public Text ContentText;
  12. public Text AddFriendButtonTitle;
  13. public Text SendMessageButtonTitle;
  14. public Image NewMessageFlagImage;
  15. public Button VisitButton;
  16. public Button AddFriendButton;
  17. public Button SendMessageButton;
  18. public BestfitText VisitButtonTitle;
  19. public string Content;
  20. public AccountData AccountData;
  21. #endregion
  22. public override bool InitAtOnce()
  23. {
  24. if (base.InitAtOnce())
  25. {
  26. return true;
  27. }
  28. Dictionary<string, Transform> childDic = new Dictionary<string, Transform>();
  29. Auxiliary.CompileDic(transform, childDic);
  30. Title = childDic[CommentItemLabel.Title].GetComponent<Text>();
  31. ContentText = childDic[CommentItemLabel.VisitButtonTitle].GetComponent<Text>();
  32. AddFriendButtonTitle = childDic[CommentItemLabel.AddFriendButtonTitle].GetComponent<Text>();
  33. SendMessageButtonTitle = childDic[CommentItemLabel.SendMessageButtonTitle].GetComponent<Text>();
  34. NewMessageFlagImage = childDic[CommentItemLabel.NewMessageFlagImage].GetComponent<Image>();
  35. VisitButton = childDic[CommentItemLabel.VisitButton].GetComponent<Button>();
  36. AddFriendButton = childDic[CommentItemLabel.AddFriendButton].GetComponent<Button>();
  37. SendMessageButton = childDic[CommentItemLabel.SendMessageButton].GetComponent<Button>();
  38. VisitButtonTitle = childDic[CommentItemLabel.Content].GetComponent<BestfitText>();
  39. VisitButtonTitle.VerticalMaxSize = 20;
  40. LanguageManager.Add(AddFriendButtonTitle, new MulLanStr(LanguageLabel.CommentItem__AddFriend));
  41. LanguageManager.Add(SendMessageButtonTitle, new MulLanStr(LanguageLabel.CommentItem__SendMessage));
  42. ContentText.text = ResourceManager.Get<Text>(CanvasLabel.C_CostLab).text;
  43. VisitButton.onClick.AddListener(Visit);
  44. AddFriendButton.onClick.AddListener(OnAddFriendButtonClick);
  45. SendMessageButton.onClick.AddListener(OnSendMessageButtonClick);
  46. Manager.OnLevelChange += level =>
  47. {
  48. ContentText.text = ResourceManager.Get<Text>(CanvasLabel.C_CostLab).text;
  49. };
  50. FriendPanel.OnFriendListRefresh += RefreshRelationship;
  51. MessagePanel.OnHaveNewMessage += OnHaveNewMessage;
  52. MessagePanel.OnDontHaveNewMessage += OnDontHaveNewMessage;
  53. return false;
  54. }
  55. public virtual void Visit()
  56. {
  57. VisitManager.Visit(ConfigSource.SerialNumber, AccountData.SerialNumber);
  58. }
  59. public virtual void Reset(AccountData accountData, string content)
  60. {
  61. Content = content;
  62. AccountData = accountData;
  63. RefreshRelationship(FriendPanel.FriendAccountDatas);
  64. if (FriendPanel.HaveNewMessage(accountData.SerialNumber))
  65. {
  66. OnHaveNewMessage(accountData.SerialNumber);
  67. }
  68. //Debug.Log(accountData.SerialNumber);
  69. //Debug.Log(HttpManager.SerialNumber);
  70. if (accountData.SerialNumber == HttpManager.SerialNumber)
  71. {
  72. VisitButton.SetActive(false);
  73. AddFriendButton.SetActive(false);
  74. SendMessageButton.SetActive(false);
  75. }
  76. else
  77. {
  78. VisitButton.SetActive(true);
  79. if (FriendPanel.IsFriend(accountData.SerialNumber))
  80. {
  81. AddFriendButton.SetActive(false);
  82. SendMessageButton.SetActive(true);
  83. }
  84. else
  85. {
  86. AddFriendButton.SetActive(true);
  87. SendMessageButton.SetActive(false);
  88. }
  89. }
  90. if (!string.IsNullOrEmpty(accountData.Nickname))
  91. {
  92. Title.text = accountData.Nickname;
  93. }
  94. else
  95. {
  96. if (Title.text.Length >= 4)
  97. {
  98. Title.text = "****" + accountData.SerialNumber.Substring(accountData.SerialNumber.Length - 4);
  99. }
  100. else
  101. {
  102. Title.text = "****" + UnityEngine.Random.Range(1000, 10000);
  103. }
  104. }
  105. VisitButtonTitle.text = content;
  106. }
  107. public void OnAddFriendButtonClick()
  108. {
  109. if (!FriendPanel.IsFriendFull(true))
  110. {
  111. AudioManager.PlayClip(ResourceLabel.BtnClip);
  112. AddFriendButton.interactable = false;
  113. HttpManager.ApplyBuddy(AccountData.SerialNumber, SendApplySucceed, SendApplyFailed);
  114. }
  115. }
  116. private void SendApplyFailed()
  117. {
  118. AddFriendButton.interactable = true;
  119. Bubble.Show(null, Language.GetStr(LanguageLabel.PlazaroomMemberItem__ConnectError));
  120. }
  121. private void SendApplySucceed()
  122. {
  123. AddFriendButton.interactable = true;
  124. Bubble.Show(null, Language.GetStr(LanguageLabel.PlazaroomMemberItem__SendApplySucceed));
  125. AddFriendButton.SetActive(false);
  126. }
  127. public void RefreshRelationship(List<AccountData> accountDatas)
  128. {
  129. //Debug.Log(1);
  130. if (IsFriend(accountDatas))
  131. {
  132. //Debug.Log(2);
  133. AddFriendButton.SetActive(false);
  134. SendMessageButton.SetActive(true);
  135. }
  136. }
  137. public bool IsFriend(List<AccountData> accountDatas)
  138. {
  139. return accountDatas.MyContains(item => AccountData.SerialNumber == item.SerialNumber);
  140. }
  141. public void OnSendMessageButtonClick()
  142. {
  143. AudioManager.PlayClip(ResourceLabel.BtnClip);
  144. MessagePanel.OpenPanel(AccountData);
  145. }
  146. public void OnHaveNewMessage(string serialNumber)
  147. {
  148. if (serialNumber == AccountData.SerialNumber)
  149. {
  150. NewMessageFlagImage.SetActive(true);
  151. }
  152. }
  153. public void OnDontHaveNewMessage(string serialNumber)
  154. {
  155. if (serialNumber == AccountData.SerialNumber)
  156. {
  157. NewMessageFlagImage.SetActive(false);
  158. }
  159. }
  160. }