ShowItemMoveToTargetPanel.cs 8.0 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.Middle, 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. Vector2 target = moveTarget.GetComponent<RectTransform>().anchoredPosition;
  69. CombatItemShowEventData combatItemShowEventData = iEventData as CombatItemShowEventData;
  70. if (combatItemShowEventData.isExp)
  71. {
  72. MainUIPanel mainUIPanel = UIManager.Instance.GetComponent<MainUIPanel>();
  73. Vector3 pos = mainUIPanel.expPoint.position;
  74. target = transform.worldToLocalMatrix * pos;
  75. }
  76. Vector3 p = UIManager.Instance.CurrCustomCameraStack.camera.WorldToScreenPoint(
  77. combatItemShowEventData.startPos_WorldPos);
  78. Vector3 p2 = UIManager.Instance.UICamera.ScreenToWorldPoint(p);
  79. Vector3 startPos = transform.worldToLocalMatrix * p2;
  80. ShowPanel(startPos, target, combatItemShowEventData.count, combatItemShowEventData.showName);
  81. }
  82. protected void RenderUpdateCallBack()
  83. {
  84. for (int i = 0; i < allImageMove.Count; i++)
  85. {
  86. ImageMove imageMove = allImageMove[i];
  87. if (imageMove.Update())
  88. {
  89. GObjectPool.Instance.Recycle(imageMove.GameObjectPool);
  90. allImageMove.RemoveAt(i);
  91. i--;
  92. }
  93. }
  94. if (allImageMove.Count <= 0)
  95. {
  96. moveTarget.gameObject.SetActive(false);
  97. }
  98. }
  99. public void AddACurve(Vector2 startPos, Vector2 target, string itemConfig)
  100. {
  101. ACurve aCurve = new ACurve();
  102. CurveInfo curveInfo = new CurveInfo();
  103. // Vector3 p = startPos + (startPos - target).normalized * 30;
  104. Vector3 moveTargetPos = startPos + new Vector2(Random.Range(-50, 50),
  105. Random.Range(-50, 50));
  106. Vector2 newStartPos = moveTargetPos;
  107. curveInfo.t = newStartPos.x;
  108. curveInfo.v = newStartPos.y;
  109. curveInfo.BSLt = 0;
  110. // float x = Random.Range(-10, 10) * 30;
  111. Vector2 normal = (newStartPos - target).normalized;
  112. int x = Random.Range(0, 100) < 50 ? 1 : -1;
  113. normal = new Vector2(normal.y, -normal.x) * x * 300 + newStartPos;
  114. normal = (normal - target).normalized * 500;
  115. curveInfo.it = normal.x + curveInfo.t;
  116. curveInfo.ot = normal.y + curveInfo.v;
  117. CurveInfo curveInfo2 = new CurveInfo();
  118. curveInfo2.t = target.x;
  119. curveInfo2.v = target.y;
  120. Vector3 normal2 = (newStartPos - target).normalized;
  121. curveInfo2.it = normal2.x + curveInfo2.t;
  122. curveInfo2.ot = normal2.y + curveInfo2.v + 10;
  123. curveInfo2.BSLt = 1;
  124. aCurve.CurveInfos = new List<CurveInfo>();
  125. aCurve.CurveInfos.Add(curveInfo);
  126. aCurve.CurveInfos.Add(curveInfo2);
  127. aCurve.CurveType = CurveType.BSL;
  128. ImageMove currImageMove = new ImageMove();
  129. currImageMove.SizeCurve = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_moveSize;
  130. currImageMove.moveSpeed = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_moveSpped;
  131. // currImageMove.ShowSizeCurve = AnimationCurveManager.Instance.AnimationCurveLibrary.ui_showSize;
  132. // currImageMove.showSizeSpeed = 10;
  133. GameObjectPool gameObjectPool =
  134. GObjectPool.Instance.FetchAsyncForGameObject<GameObjectPool>(moveIcon.gameObject, "moveIcon");
  135. gameObjectPool.own.transform.SetParent(transform);
  136. gameObjectPool.own.SetActive(false);
  137. gameObjectPool.own.transform.localScale = Vector3.zero;
  138. currImageMove.GameObjectPool = gameObjectPool;
  139. MyImage myImage= gameObjectPool.own.GetComponent<MyImage>();
  140. myImage.onSpriteAlter= delegate
  141. {
  142. myImage.SetNativeSize();
  143. };
  144. myImage.icon_name = itemConfig;
  145. currImageMove.transform = gameObjectPool.own.GetComponent<RectTransform>();
  146. // currImageMove.transform.sizeDelta = new Vector2(35, 35);
  147. currImageMove.moveStartPos = startPos;
  148. currImageMove.moveTargetPos = moveTargetPos;
  149. currImageMove.transform.anchoredPosition = currImageMove.moveStartPos;
  150. currImageMove.yanChi = Random.Range(0, 0.5f);
  151. currImageMove.speed = AnimationCurveManager.Instance.AnimationCurveLibrary.uiMoveSpeed;
  152. currImageMove.currAcur = aCurve;
  153. allImageMove.Add(currImageMove);
  154. }
  155. public void ShowPanel(Vector2 startPos, Vector2 target, int count, string showName)
  156. {
  157. if (target.x == -5000)
  158. {
  159. target = moveTarget.GetComponent<RectTransform>().anchoredPosition;
  160. }
  161. for (int i = 0; i < count; i++)
  162. {
  163. AddACurve(startPos, target, showName);
  164. }
  165. }
  166. }
  167. }