TipMessagePanel.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using Core.Language;
  2. using Fort23.Core;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. namespace Fort23.Mono
  6. {
  7. [UIBinding(prefab = "TipMessagePanel")]
  8. public partial class TipMessagePanel : UIComponent
  9. {
  10. public static async CTask<TipMessagePanel> OpenTipMessagePanel(string meg, Vector2 worldPos = default)
  11. {
  12. if (PlayerManager.Instance.serverTime - UIManager.Instance.ShowTextTime < 700)
  13. {
  14. return null;
  15. }
  16. UIManager.Instance.ShowTextTime = PlayerManager.Instance.serverTime;
  17. TipMessagePanel tipMessagePanel =
  18. await UIManager.Instance.CreateGComponent<TipMessagePanel>(null,
  19. UIManager.Instance.GetLayer(UILayer.Top));
  20. tipMessagePanel.SetTipMessage(meg, worldPos);
  21. return tipMessagePanel;
  22. }
  23. public static async CTask<TipMessagePanel> OpenTipMessagePanel(int meg, Vector2 worldPos = default)
  24. {
  25. if (PlayerManager.Instance.serverTime - UIManager.Instance.ShowTextTime < 700)
  26. {
  27. return null;
  28. }
  29. UIManager.Instance.ShowTextTime = PlayerManager.Instance.serverTime;
  30. TipMessagePanel tipMessagePanel =
  31. await UIManager.Instance.CreateGComponent<TipMessagePanel>(null,
  32. UIManager.Instance.GetLayer(UILayer.Top));
  33. tipMessagePanel.SetTipMessage(LanguageManager.Instance.Text(meg), worldPos);
  34. return tipMessagePanel;
  35. }
  36. public override async CTask Open()
  37. {
  38. await base.Open();
  39. // GObjectPoolInterface.SetActive(false);
  40. }
  41. private void Init()
  42. {
  43. }
  44. public override void AddEvent()
  45. {
  46. }
  47. public override void DelEvent()
  48. {
  49. }
  50. public override void AddButtonEvent()
  51. {
  52. button_bg.onClick.AddListener(OnClickButton_bg);
  53. }
  54. private void OnClickButton_bg()
  55. {
  56. // UIManager.Instance.HideUIUIPanel(this);
  57. }
  58. public async void SetTipMessage(string msg, Vector2 pos)
  59. {
  60. pos = this.transform.worldToLocalMatrix * pos;
  61. if (pos.x > 186)
  62. {
  63. pos.x = 186;
  64. }
  65. if (pos.x < -186)
  66. {
  67. pos.x = -186;
  68. }
  69. message.text = msg;
  70. RectTransform rectTransform = message.GetComponent<RectTransform>();
  71. message.SetLayoutDirty();
  72. LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);
  73. RectTransform bgTran = bg_icon.GetComponent<RectTransform>();
  74. float y = rectTransform.sizeDelta.y + 20;
  75. if (y < 100)
  76. {
  77. y = 100;
  78. }
  79. bgTran.sizeDelta = new Vector2(bgTran.sizeDelta.x, y);
  80. float maxY = this.transform.sizeDelta.y / 2;
  81. float my2 = y / 2;
  82. if (pos.y > maxY - my2)
  83. {
  84. pos.y = maxY - my2;
  85. }
  86. if (pos.y < my2 - maxY)
  87. {
  88. pos.y = my2 - maxY;
  89. }
  90. dotPoint.anchoredPosition = pos;
  91. LayoutRebuilder.ForceRebuildLayoutImmediate(bgTran);
  92. Animator.Play("showTips");
  93. TimerComponent.Instance.AddTimer(1450, () => { UIManager.Instance.DormancyGComponent(this); });
  94. }
  95. }
  96. }