TipMessagePanel.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using Fort23.Core;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. namespace Fort23.Mono
  5. {
  6. [UIBinding(prefab = "TipMessagePanel")]
  7. public partial class TipMessagePanel : UIPanel
  8. {
  9. public static async void OpenTipMessagePanel(string meg, Vector2 worldPos)
  10. {
  11. TipMessagePanel tipMessagePanel =
  12. await UIManager.Instance.LoadAndOpenPanel<TipMessagePanel>(null, UILayer.Top);
  13. tipMessagePanel.SetTipMessage(meg, worldPos);
  14. }
  15. public override async CTask Open()
  16. {
  17. await base.Open();
  18. GObjectPoolInterface.SetActive(false);
  19. }
  20. private void Init()
  21. {
  22. }
  23. protected override void AddEvent()
  24. {
  25. }
  26. protected override void DelEvent()
  27. {
  28. }
  29. public override void AddButtonEvent()
  30. {
  31. button_bg.onClick.AddListener(OnClickButton_bg);
  32. }
  33. private void OnClickButton_bg()
  34. {
  35. UIManager.Instance.HideUIUIPanel(this);
  36. }
  37. public void SetTipMessage(string msg, Vector2 pos)
  38. {
  39. pos = this.transform.worldToLocalMatrix * pos;
  40. if (pos.x > 186)
  41. {
  42. pos.x = 186;
  43. }
  44. if (pos.x < -186)
  45. {
  46. pos.x = -186;
  47. }
  48. message.text = msg;
  49. RectTransform rectTransform = message.GetComponent<RectTransform>();
  50. message.SetLayoutDirty();
  51. LayoutRebuilder.MarkLayoutForRebuild(rectTransform);
  52. LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);
  53. rectTransform.GetComponent<ContentSizeFitter>().SetLayoutVertical();
  54. RectTransform bgTran = bg_icon.GetComponent<RectTransform>();
  55. // await TimerComponent.Instance.WaitAsync(30);
  56. // float y= LayoutUtility.GetPreferredSize(massge.GetComponent<RectTransform>(), 0)+40;
  57. // massge.
  58. // massge.OnRebuildRequested();
  59. float y = rectTransform.sizeDelta.y + 40;
  60. if (y < 100)
  61. {
  62. y = 100;
  63. }
  64. bgTran.sizeDelta = new Vector2(bgTran.sizeDelta.x, y);
  65. float maxY = this.transform.sizeDelta.y / 2;
  66. float my2 = y / 2;
  67. if (pos.y > maxY - my2)
  68. {
  69. pos.y = maxY - my2;
  70. }
  71. if (pos.y < my2 - maxY)
  72. {
  73. pos.y = my2 - maxY;
  74. }
  75. dotPoint.anchoredPosition = pos;
  76. LayoutRebuilder.MarkLayoutForRebuild(bgTran);
  77. LayoutRebuilder.ForceRebuildLayoutImmediate(bgTran);
  78. GObjectPoolInterface.SetActive(true);
  79. }
  80. }
  81. }