TipMessagePanel.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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, isFocus: false);
  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, isFocus: false);
  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. isAddStack = false;
  32. }
  33. protected override void AddEvent()
  34. {
  35. }
  36. protected override void DelEvent()
  37. {
  38. }
  39. public override void AddButtonEvent()
  40. {
  41. button_bg.onClick.AddListener(OnClickButton_bg);
  42. }
  43. private void OnClickButton_bg()
  44. {
  45. UIManager.Instance.HideUIUIPanel(this);
  46. }
  47. public async void SetTipMessage(string msg, Vector2 pos)
  48. {
  49. pos = this.transform.worldToLocalMatrix * pos;
  50. if (pos.x > 186)
  51. {
  52. pos.x = 186;
  53. }
  54. if (pos.x < -186)
  55. {
  56. pos.x = -186;
  57. }
  58. GObjectPoolInterface.SetActive(true);
  59. message.text = msg;
  60. RectTransform rectTransform = message.GetComponent<RectTransform>();
  61. message.SetLayoutDirty();
  62. //message.OnRebuildRequested();
  63. LayoutRebuilder.MarkLayoutForRebuild(rectTransform);
  64. LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);
  65. rectTransform.GetComponent<ContentSizeFitter>().SetLayoutVertical();
  66. RectTransform bgTran = bg_icon.GetComponent<RectTransform>();
  67. // await TimerComponent.Instance.WaitAsync(100);
  68. // float y2 = LayoutUtility.GetPreferredSize(rectTransform, 0) + 40;
  69. // message.OnRebuildRequested();
  70. // massge.OnRebuildRequested();
  71. float y = rectTransform.sizeDelta.y + 40;
  72. if (y < 100)
  73. {
  74. y = 100;
  75. }
  76. bgTran.sizeDelta = new Vector2(bgTran.sizeDelta.x, y);
  77. float maxY = this.transform.sizeDelta.y / 2;
  78. float my2 = y / 2;
  79. if (pos.y > maxY - my2)
  80. {
  81. pos.y = maxY - my2;
  82. }
  83. if (pos.y < my2 - maxY)
  84. {
  85. pos.y = my2 - maxY;
  86. }
  87. dotPoint.anchoredPosition = pos;
  88. LayoutRebuilder.MarkLayoutForRebuild(bgTran);
  89. LayoutRebuilder.ForceRebuildLayoutImmediate(bgTran);
  90. GObjectPoolInterface.SetActive(true);
  91. }
  92. }
  93. }