BaseComment.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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. if (accountData.SerialNumber == HttpManager.SerialNumber)
  69. {
  70. VisitButton.SetActive(false);
  71. AddFriendButton.SetActive(false);
  72. SendMessageButton.SetActive(false);
  73. }
  74. else
  75. {
  76. VisitButton.SetActive(true);
  77. if (FriendPanel.IsFriend(accountData.SerialNumber))
  78. {
  79. AddFriendButton.SetActive(false);
  80. SendMessageButton.SetActive(true);
  81. }
  82. else
  83. {
  84. AddFriendButton.SetActive(true);
  85. SendMessageButton.SetActive(false);
  86. }
  87. }
  88. if (!string.IsNullOrEmpty(accountData.Nickname))
  89. {
  90. Title.text = accountData.Nickname;
  91. }
  92. else
  93. {
  94. if (Title.text.Length >= 4)
  95. {
  96. Title.text = "****" + accountData.SerialNumber.Substring(accountData.SerialNumber.Length - 4);
  97. }
  98. else
  99. {
  100. Title.text = "****" + UnityEngine.Random.Range(1000, 10000);
  101. }
  102. }
  103. VisitButtonTitle.text = content;
  104. }
  105. public void OnAddFriendButtonClick()
  106. {
  107. if (!FriendPanel.IsFriendFull(true))
  108. {
  109. AudioManager.PlayClip(ResourceLabel.BtnClip);
  110. AddFriendButton.interactable = false;
  111. HttpManager.ApplyBuddy(AccountData.SerialNumber, SendApplySucceed, SendApplyFailed);
  112. }
  113. }
  114. private void SendApplyFailed()
  115. {
  116. AddFriendButton.interactable = true;
  117. Bubble.Show(null, Language.GetStr(LanguageLabel.PlazaroomMemberItem__ConnectError));
  118. }
  119. private void SendApplySucceed()
  120. {
  121. AddFriendButton.interactable = true;
  122. Bubble.Show(null, Language.GetStr(LanguageLabel.PlazaroomMemberItem__SendApplySucceed));
  123. AddFriendButton.SetActive(false);
  124. }
  125. public void RefreshRelationship(List<AccountData> accountDatas)
  126. {
  127. //Debug.Log(1);
  128. if (IsFriend(accountDatas))
  129. {
  130. //Debug.Log(2);
  131. AddFriendButton.SetActive(false);
  132. SendMessageButton.SetActive(true);
  133. }
  134. }
  135. public bool IsFriend(List<AccountData> accountDatas)
  136. {
  137. return accountDatas.MyContains(item => AccountData.SerialNumber == item.SerialNumber);
  138. }
  139. public void OnSendMessageButtonClick()
  140. {
  141. AudioManager.PlayClip(ResourceLabel.BtnClip);
  142. MessagePanel.OpenPanel(AccountData);
  143. }
  144. public void OnHaveNewMessage(string serialNumber)
  145. {
  146. if (serialNumber == AccountData.SerialNumber)
  147. {
  148. NewMessageFlagImage.SetActive(true);
  149. }
  150. }
  151. public void OnDontHaveNewMessage(string serialNumber)
  152. {
  153. if (serialNumber == AccountData.SerialNumber)
  154. {
  155. NewMessageFlagImage.SetActive(false);
  156. }
  157. }
  158. }