ShowItemMoveToTargetPanel.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  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. public static async CTask OpenShowItemMoveToTargetPanel()
  16. {
  17. ShowItemMoveToTargetPanel showItemMoveToTargetPanel =
  18. await UIManager.Instance.LoadAndOpenPanel<ShowItemMoveToTargetPanel>(null, UILayer.Top, isFocus: false);
  19. }
  20. public static async void OpenShowItemMoveToTargetPanel(Vector2 startPos, Vector2 target,
  21. bool isStartPosUseWorld, bool isEndPosUseWorld,
  22. List<string> allItem)
  23. {
  24. ShowItemMoveToTargetPanel showItemMoveToTargetPanel =
  25. await UIManager.Instance.LoadAndOpenPanel<ShowItemMoveToTargetPanel>(null, UILayer.Top, isFocus: false);
  26. if (isStartPosUseWorld)
  27. {
  28. startPos = showItemMoveToTargetPanel.transform.worldToLocalMatrix * startPos;
  29. }
  30. if (isEndPosUseWorld)
  31. {
  32. target = showItemMoveToTargetPanel.transform.worldToLocalMatrix * target;
  33. }
  34. showItemMoveToTargetPanel.ShowPanel(startPos, target, allItem);
  35. }
  36. public static async void OpenShowItemMoveToTargetPanel(List<string> allItem)
  37. {
  38. ShowItemMoveToTargetPanel showItemMoveToTargetPanel =
  39. await UIManager.Instance.LoadAndOpenPanel<ShowItemMoveToTargetPanel>(null, UILayer.Top, isFocus: false);
  40. Vector2 target = showItemMoveToTargetPanel.moveTarget.GetComponent<RectTransform>().anchoredPosition;
  41. showItemMoveToTargetPanel.moveTarget.gameObject.SetActive(true);
  42. showItemMoveToTargetPanel.ShowPanel(new Vector2(), target, allItem);
  43. }
  44. public static async void OpenShowItemMoveToTargetPanel(Vector2 startPos, Vector2 target, List<string> allItem)
  45. {
  46. ShowItemMoveToTargetPanel showItemMoveToTargetPanel =
  47. await UIManager.Instance.LoadAndOpenPanel<ShowItemMoveToTargetPanel>(null, UILayer.Top, isFocus: false);
  48. showItemMoveToTargetPanel.ShowPanel(startPos, target, allItem);
  49. }
  50. private void Init()
  51. {
  52. }
  53. protected override void AddEvent()
  54. {
  55. StaticUpdater.Instance.AddRenderUpdateCallBack(RenderUpdateCallBack);
  56. EventManager.Instance.AddEventListener(CustomEventType.Combat_ItemShow, Combat_ItemShow);
  57. }
  58. protected override void DelEvent()
  59. {
  60. StaticUpdater.Instance.RemoveRenderUpdateCallBack(RenderUpdateCallBack);
  61. EventManager.Instance.RemoveEventListener(CustomEventType.Combat_ItemShow, Combat_ItemShow);
  62. }
  63. public override void AddButtonEvent()
  64. {
  65. }
  66. protected void Combat_ItemShow(IEventData iEventData)
  67. {
  68. CombatItemShowEventData combatItemShowEventData = iEventData as CombatItemShowEventData;
  69. Vector2 target = moveTarget.GetComponent<RectTransform>().anchoredPosition;
  70. moveTarget.gameObject.SetActive(true);
  71. Vector3 p = UIManager.Instance.CurrCustomCameraStack.camera.WorldToScreenPoint(
  72. combatItemShowEventData.startPos_WorldPos);
  73. Vector3 p2 = UIManager.Instance.UICamera.ScreenToWorldPoint(p);
  74. // RectTransform rectTransform= moveIcon.GetComponent<RectTransform>();
  75. // rectTransform.position = p2;
  76. Vector3 startPos = transform.worldToLocalMatrix * p2;
  77. ShowPanel(startPos, target, combatItemShowEventData.showItem);
  78. }
  79. protected void RenderUpdateCallBack()
  80. {
  81. for (int i = 0; i < allImageMove.Count; i++)
  82. {
  83. ImageMove imageMove = allImageMove[i];
  84. if (imageMove.Update())
  85. {
  86. GObjectPool.Instance.Recycle(imageMove.GameObjectPool);
  87. allImageMove.RemoveAt(i);
  88. i--;
  89. }
  90. }
  91. if (allImageMove.Count <= 0)
  92. {
  93. moveTarget.gameObject.SetActive(false);
  94. }
  95. }
  96. public void AddACurve(Vector2 startPos, Vector2 target, string itemConfig)
  97. {
  98. ACurve aCurve = new ACurve();
  99. CurveInfo curveInfo = new CurveInfo();
  100. Vector3 p = startPos + (startPos - target).normalized * 30;
  101. Vector3 moveTargetPos = new Vector3(p.x + Random.Range(-1, 1),
  102. p.y + Random.Range(-1, 1));
  103. Vector2 newStartPos = moveTargetPos;
  104. curveInfo.t = newStartPos.x;
  105. curveInfo.v = newStartPos.y;
  106. curveInfo.BSLt = 0;
  107. float x = Random.Range(-10, 10) * 30;
  108. Vector3 normal = (target - newStartPos).normalized;
  109. normal = new Vector3(Random.Range(-10, 10), Random.Range(-10, 10));
  110. curveInfo.it = normal.x + x + curveInfo.t;
  111. curveInfo.ot = normal.y + curveInfo.v + 10;
  112. CurveInfo curveInfo2 = new CurveInfo();
  113. curveInfo2.t = target.x;
  114. curveInfo2.v = target.y;
  115. Vector3 normal2 = (newStartPos - target).normalized;
  116. curveInfo2.it = normal2.x + x + curveInfo2.t;
  117. curveInfo2.ot = normal2.y + curveInfo2.v + 10;
  118. curveInfo2.BSLt = 1;
  119. aCurve.CurveInfos = new List<CurveInfo>();
  120. aCurve.CurveInfos.Add(curveInfo);
  121. aCurve.CurveInfos.Add(curveInfo2);
  122. aCurve.CurveType = CurveType.BSL;
  123. ImageMove currImageMove = new ImageMove();
  124. currImageMove.SizeCurve = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_moveSize;
  125. currImageMove.moveSpeed = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_moveSpped;
  126. currImageMove.ShowSizeCurve = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_showSize;
  127. currImageMove.showSizeSpeed = 10;
  128. GameObjectPool gameObjectPool =
  129. GObjectPool.Instance.FetchAsyncForGameObject<GameObjectPool>(moveIcon.gameObject, "moveIcon");
  130. gameObjectPool.own.transform.SetParent(transform);
  131. gameObjectPool.own.SetActive(false);
  132. gameObjectPool.own.transform.localScale = Vector3.zero;
  133. currImageMove.GameObjectPool = gameObjectPool;
  134. // gameObjectPool.own.GetComponent<MyImage>().icon_name = itemConfig;
  135. currImageMove.transform = gameObjectPool.own.GetComponent<RectTransform>();
  136. currImageMove.transform.sizeDelta = new Vector2(35, 35);
  137. currImageMove.moveStartPos = startPos;
  138. currImageMove.moveTargetPos = moveTargetPos;
  139. currImageMove.transform.anchoredPosition = currImageMove.moveStartPos;
  140. currImageMove.yanChi = Random.Range(0, 0.5f);
  141. currImageMove.speed = 2;
  142. currImageMove.currAcur = aCurve;
  143. allImageMove.Add(currImageMove);
  144. }
  145. public void ShowPanel(Vector2 startPos, Vector2 target, List<string> allItem)
  146. {
  147. if (allItem.Count < 10)
  148. {
  149. for (int i = allItem.Count; i <= 10; i++)
  150. {
  151. allItem.Add(allItem[Random.Range(0, allItem.Count)]);
  152. }
  153. }
  154. if (target.x == -5000)
  155. {
  156. target = moveTarget.GetComponent<RectTransform>().anchoredPosition;
  157. }
  158. for (int i = 0; i < allItem.Count; i++)
  159. {
  160. string item = allItem[i];
  161. AddACurve(startPos, target, item);
  162. }
  163. }
  164. }
  165. }