TipMessagePanel.cs 3.2 KB

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