TipMessagePanel.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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 : UIPanel
  9. {
  10. public static async CTask<TipMessagePanel> OpenTipMessagePanel(string meg, Vector2 worldPos = default)
  11. {
  12. TipMessagePanel tipMessagePanel =
  13. await UIManager.Instance.LoadAndOpenPanel<TipMessagePanel>(null, UILayer.Top);
  14. tipMessagePanel.SetTipMessage(meg, worldPos);
  15. return tipMessagePanel;
  16. }
  17. public static async CTask<TipMessagePanel> OpenTipMessagePanel(int meg, Vector2 worldPos = default)
  18. {
  19. TipMessagePanel tipMessagePanel =
  20. await UIManager.Instance.LoadAndOpenPanel<TipMessagePanel>(null, UILayer.Top);
  21. tipMessagePanel.SetTipMessage(LanguageManager.Instance.Text(meg), worldPos);
  22. return tipMessagePanel;
  23. }
  24. public override async CTask Open()
  25. {
  26. await base.Open();
  27. GObjectPoolInterface.SetActive(false);
  28. }
  29. private void Init()
  30. {
  31. }
  32. protected override void AddEvent()
  33. {
  34. }
  35. protected override void DelEvent()
  36. {
  37. }
  38. public override void AddButtonEvent()
  39. {
  40. button_bg.onClick.AddListener(OnClickButton_bg);
  41. }
  42. private void OnClickButton_bg()
  43. {
  44. UIManager.Instance.HideUIUIPanel(this);
  45. }
  46. public async void SetTipMessage(string msg, Vector2 pos)
  47. {
  48. pos = this.transform.worldToLocalMatrix * pos;
  49. if (pos.x > 186)
  50. {
  51. pos.x = 186;
  52. }
  53. if (pos.x < -186)
  54. {
  55. pos.x = -186;
  56. }
  57. GObjectPoolInterface.SetActive(true);
  58. message.text = msg;
  59. RectTransform rectTransform = message.GetComponent<RectTransform>();
  60. message.SetLayoutDirty();
  61. //message.OnRebuildRequested();
  62. LayoutRebuilder.MarkLayoutForRebuild(rectTransform);
  63. LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);
  64. rectTransform.GetComponent<ContentSizeFitter>().SetLayoutVertical();
  65. RectTransform bgTran = bg_icon.GetComponent<RectTransform>();
  66. // await TimerComponent.Instance.WaitAsync(100);
  67. // float y2 = LayoutUtility.GetPreferredSize(rectTransform, 0) + 40;
  68. // message.OnRebuildRequested();
  69. // massge.OnRebuildRequested();
  70. float y = rectTransform.sizeDelta.y + 40;
  71. if (y < 100)
  72. {
  73. y = 100;
  74. }
  75. bgTran.sizeDelta = new Vector2(bgTran.sizeDelta.x, y);
  76. float maxY = this.transform.sizeDelta.y / 2;
  77. float my2 = y / 2;
  78. if (pos.y > maxY - my2)
  79. {
  80. pos.y = maxY - my2;
  81. }
  82. if (pos.y < my2 - maxY)
  83. {
  84. pos.y = my2 - maxY;
  85. }
  86. dotPoint.anchoredPosition = pos;
  87. LayoutRebuilder.MarkLayoutForRebuild(bgTran);
  88. LayoutRebuilder.ForceRebuildLayoutImmediate(bgTran);
  89. GObjectPoolInterface.SetActive(true);
  90. }
  91. }
  92. }