ShowItemMoveToTargetPanel.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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.Count);
  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.Count);
  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.Count);
  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.count);
  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 = startPos + new Vector2(Random.Range(-50, 50),
  102. Random.Range(-50, 50));
  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. Vector2 normal = (newStartPos - target).normalized;
  109. int x = Random.Range(0, 100) < 50 ? 1 : -1;
  110. normal = new Vector2(normal.y, -normal.x) * x * 300 + newStartPos;
  111. normal = (normal - target).normalized * 500;
  112. curveInfo.it = normal.x + curveInfo.t;
  113. curveInfo.ot = normal.y + curveInfo.v;
  114. CurveInfo curveInfo2 = new CurveInfo();
  115. curveInfo2.t = target.x;
  116. curveInfo2.v = target.y;
  117. Vector3 normal2 = (newStartPos - target).normalized;
  118. curveInfo2.it = normal2.x + curveInfo2.t;
  119. curveInfo2.ot = normal2.y + curveInfo2.v + 10;
  120. curveInfo2.BSLt = 1;
  121. aCurve.CurveInfos = new List<CurveInfo>();
  122. aCurve.CurveInfos.Add(curveInfo);
  123. aCurve.CurveInfos.Add(curveInfo2);
  124. aCurve.CurveType = CurveType.BSL;
  125. ImageMove currImageMove = new ImageMove();
  126. currImageMove.SizeCurve = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_moveSize;
  127. currImageMove.moveSpeed = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_moveSpped;
  128. // currImageMove.ShowSizeCurve = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_showSize;
  129. // currImageMove.showSizeSpeed = 10;
  130. GameObjectPool gameObjectPool =
  131. GObjectPool.Instance.FetchAsyncForGameObject<GameObjectPool>(moveIcon.gameObject, "moveIcon");
  132. gameObjectPool.own.transform.SetParent(transform);
  133. gameObjectPool.own.SetActive(false);
  134. gameObjectPool.own.transform.localScale = Vector3.zero;
  135. currImageMove.GameObjectPool = gameObjectPool;
  136. // gameObjectPool.own.GetComponent<MyImage>().icon_name = itemConfig;
  137. currImageMove.transform = gameObjectPool.own.GetComponent<RectTransform>();
  138. currImageMove.transform.sizeDelta = new Vector2(35, 35);
  139. currImageMove.moveStartPos = startPos;
  140. currImageMove.moveTargetPos = moveTargetPos;
  141. currImageMove.transform.anchoredPosition = currImageMove.moveStartPos;
  142. currImageMove.yanChi = Random.Range(0, 0.5f);
  143. currImageMove.speed = AnimationCurveManager.Instance.AnimationCurveLibrary.uiMoveSpeed;
  144. currImageMove.currAcur = aCurve;
  145. allImageMove.Add(currImageMove);
  146. }
  147. public void ShowPanel(Vector2 startPos, Vector2 target,int count)
  148. {
  149. // if (allItem.Count < 5)
  150. // {
  151. // for (int i = allItem.Count; i <= 5; i++)
  152. // {
  153. // allItem.Add(allItem[Random.Range(0, allItem.Count)]);
  154. // }
  155. // }
  156. if (target.x == -5000)
  157. {
  158. target = moveTarget.GetComponent<RectTransform>().anchoredPosition;
  159. }
  160. for (int i = 0; i <count; i++)
  161. {
  162. string item = "count";
  163. AddACurve(startPos, target, item);
  164. }
  165. }
  166. }
  167. }