ShowItemMoveToTargetPanel.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. using System.Collections.Generic;
  2. using CombatLibrary.CombatLibrary.CombatCore.Utility;
  3. using Common.Utility.CombatEvent;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using UnityEngine;
  7. using UnityEngine.UI;
  8. using Utility.UITool;
  9. namespace Fort23.Mono
  10. {
  11. [UIBinding(prefab = "ShowItemMoveToTargetPanel")]
  12. public partial class ShowItemMoveToTargetPanel : UIPanel
  13. {
  14. protected List<ImageMove> allImageMove = new List<ImageMove>();
  15. List<ImageMoveContainer> _imageMoveContainers = new List<ImageMoveContainer>();
  16. public static async CTask<ShowItemMoveToTargetPanel> OpenShowItemMoveToTargetPanel()
  17. {
  18. ShowItemMoveToTargetPanel showItemMoveToTargetPanel =
  19. await UIManager.Instance.LoadAndOpenPanel<ShowItemMoveToTargetPanel>(null, UILayer.Loading,
  20. isFocus: false);
  21. return showItemMoveToTargetPanel;
  22. }
  23. public async override CTask Show()
  24. {
  25. await base.Show();
  26. Ui.sizeDelta = transform.sizeDelta;
  27. }
  28. private void Init()
  29. {
  30. }
  31. protected override void AddEvent()
  32. {
  33. StaticUpdater.Instance.AddRenderUpdateCallBack(RenderUpdateCallBack);
  34. }
  35. protected override void DelEvent()
  36. {
  37. StaticUpdater.Instance.RemoveRenderUpdateCallBack(RenderUpdateCallBack);
  38. }
  39. public override void AddButtonEvent()
  40. {
  41. }
  42. protected void RenderUpdateCallBack()
  43. {
  44. for (int i = 0; i < allImageMove.Count; i++)
  45. {
  46. ImageMove imageMove = allImageMove[i];
  47. if (imageMove.Update())
  48. {
  49. GObjectPool.Instance.Recycle(imageMove.GameObjectPool);
  50. allImageMove.RemoveAt(i);
  51. i--;
  52. }
  53. }
  54. if (allImageMove.Count <= 0)
  55. {
  56. moveTarget.gameObject.SetActive(false);
  57. }
  58. }
  59. private async CTask<ImageMove> AddACurve(Vector2 startPos, Vector2 target, string itemConfig, object data, CombatItemShowEventData.ShowType showType,
  60. System.Action<ImageMove> finishCallBack, System.Action<ImageMove> targetPointSet)
  61. {
  62. ACurve aCurve = new ACurve();
  63. CurveInfo curveInfo = new CurveInfo();
  64. // Vector3 p = startPos + (startPos - target).normalized * 30;
  65. Vector3 moveTargetPos = startPos + new Vector2(Random.Range(-50, 50),
  66. Random.Range(-50, 50));
  67. Vector2 newStartPos = moveTargetPos;
  68. curveInfo.t = newStartPos.x;
  69. curveInfo.v = newStartPos.y;
  70. curveInfo.BSLt = 0;
  71. // float x = Random.Range(-10, 10) * 30;
  72. Vector2 normal = (newStartPos - target).normalized;
  73. int x = Random.Range(0, 100) < 50 ? 1 : -1;
  74. normal = new Vector2(normal.y, -normal.x) * x * 300 + newStartPos;
  75. normal = (normal - target).normalized * 500;
  76. curveInfo.it = normal.x + curveInfo.t;
  77. curveInfo.ot = normal.y + curveInfo.v;
  78. CurveInfo curveInfo2 = new CurveInfo();
  79. curveInfo2.t = target.x;
  80. curveInfo2.v = target.y;
  81. Vector3 normal2 = (newStartPos - target).normalized;
  82. curveInfo2.it = normal2.x + curveInfo2.t;
  83. curveInfo2.ot = normal2.y + curveInfo2.v + 10;
  84. curveInfo2.BSLt = 1;
  85. aCurve.CurveInfos = new List<CurveInfo>();
  86. aCurve.CurveInfos.Add(curveInfo);
  87. aCurve.CurveInfos.Add(curveInfo2);
  88. aCurve.CurveType = CurveType.BSL;
  89. ImageMove currImageMove = CObjectPool.Instance.Fetch<ImageMove>();
  90. currImageMove.finishCallBack = finishCallBack;
  91. currImageMove.targetPointSet = targetPointSet;
  92. currImageMove.data = data;
  93. currImageMove.moveSpeed = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_moveSpped;
  94. // currImageMove.ShowSizeCurve = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_showSize;
  95. // currImageMove.showSizeSpeed = 10;
  96. GameObjectPool gameObjectPool;
  97. MyImage myImage;
  98. currImageMove.speed = AnimationCurveManager.Instance.AnimationCurveLibrary.uiMoveSpeed;
  99. gameObjectPool =
  100. GObjectPool.Instance.FetchAsyncForGameObject<GameObjectPool>(moveIcon.gameObject, "moveIcon");
  101. myImage = gameObjectPool.own.GetComponent<MyImage>();
  102. myImage.icon_name = itemConfig;
  103. // currImageMove.speed = AnimationCurveManager.Instance.AnimationCurveLibrary.uiMoveSpeed;
  104. // gameObjectPool =
  105. // GObjectPool.Instance.FetchAsyncForGameObject<GameObjectPool>(moveIcon.gameObject, "moveIcon");
  106. // myImage = gameObjectPool.own.GetComponent<MyImage>();
  107. // myImage.icon_name = itemConfig;
  108. currImageMove.SizeCurve = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_moveSize;
  109. gameObjectPool.own.transform.SetParent(Ui);
  110. gameObjectPool.own.SetActive(false);
  111. gameObjectPool.own.transform.localScale = Vector3.zero;
  112. currImageMove.GameObjectPool = gameObjectPool;
  113. currImageMove.transform = gameObjectPool.own.GetComponent<RectTransform>();
  114. currImageMove.transform.sizeDelta = new Vector2(50, 65);
  115. currImageMove.moveStartPos = startPos;
  116. currImageMove.transform.anchoredPosition = currImageMove.moveStartPos;
  117. currImageMove.yanChi = Random.Range(0, 0.5f);
  118. currImageMove.currAcur = aCurve;
  119. allImageMove.Add(currImageMove);
  120. return currImageMove;
  121. }
  122. public async void ShowPanel(Vector2 startPos, Vector2 target, int count, string showName, CombatItemShowEventData.ShowType showType,
  123. System.Action<ImageMove> finishCallBack = null, System.Action<ImageMove> targetPointSet = null, object data = null, System.Action<ImageMove> initCallBack = null)
  124. {
  125. if (target.x == -5000)
  126. {
  127. target = moveTarget.GetComponent<RectTransform>().anchoredPosition;
  128. }
  129. for (int i = 0; i < count; i++)
  130. {
  131. ImageMove imageMove = await AddACurve(startPos, target, showName, data, showType, finishCallBack, targetPointSet);
  132. imageMove.GroupIndex = i;
  133. initCallBack?.Invoke(imageMove);
  134. }
  135. }
  136. }
  137. }