TimeLienData.cs 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. using System;
  2. using System.Collections.Generic;
  3. using CombatCore.SerializationTimeLine;
  4. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  5. using CombatLibrary.CombatLibrary.CombatCore.Utility;
  6. using Fort23.UTool;
  7. using Utility;
  8. #if !COMBAT_SERVER
  9. using UnityEngine;
  10. #endif
  11. [System.Serializable]
  12. public class TimeLienData
  13. {
  14. public List<string> key = new List<string>();
  15. public List<string> value = new List<string>();
  16. public string heroName;
  17. public Map<string, List<TimeLineAssetSerialization>> allAssetSerializations =
  18. new Map<string, List<TimeLineAssetSerialization>>();
  19. public BetterList<string> allAssetSerializationsKeys = new BetterList<string>();
  20. // public TimeLineAssetSerialization[] GetAllTimeLineAssetSerialization
  21. // {
  22. // get { return allAssetSerializations.ToArray(); }
  23. // }
  24. public TimeLienData Clone()
  25. {
  26. TimeLienData timeLienData = (TimeLienData) this.MemberwiseClone();
  27. timeLienData.DeserializeData();
  28. return timeLienData;
  29. }
  30. /// <summary>
  31. /// 反序列化
  32. /// </summary>
  33. public void DeserializeData()
  34. {
  35. allAssetSerializations.Clear();
  36. allAssetSerializationsKeys.Clear();
  37. for (int i = 0; i < key.Count; i++)
  38. {
  39. Type type = System.Type.GetType(key[i]);
  40. if (type != null)
  41. {
  42. TimeLineAssetSerialization timeLineAssetSerialization =
  43. (TimeLineAssetSerialization) JsonManager.FromJson(value[i], type);
  44. if (allAssetSerializations.TryGetValue(timeLineAssetSerialization.groupName,
  45. out List<TimeLineAssetSerialization> info))
  46. {
  47. info.Add(timeLineAssetSerialization);
  48. }
  49. else
  50. {
  51. info = new List<TimeLineAssetSerialization>();
  52. info.Add(timeLineAssetSerialization);
  53. string keys = timeLineAssetSerialization.groupName;
  54. allAssetSerializations.Add(keys, info);
  55. allAssetSerializationsKeys.Add(keys);
  56. }
  57. }
  58. else
  59. {
  60. LogTool.Error(key[i] + "失败");
  61. }
  62. }
  63. }
  64. public T GetTimeLineEventLogicGroup<T>(string groupName, IFilterTimeLine filterTimeLine)
  65. where T : TimeLineEventLogicGroupBasic, new()
  66. {
  67. List<TimeLineAssetSerialization> timeLineAssetSerializations =
  68. GetTimeLineAssetSerialization(groupName, filterTimeLine);
  69. if (timeLineAssetSerializations.Count <= 0)
  70. {
  71. // LogTool.Log("没有时间线" + groupName);
  72. return null;
  73. }
  74. T timeLineEventLogicGroup = new T();
  75. timeLineEventLogicGroup.groupName = groupName;
  76. timeLineEventLogicGroup.Init(timeLineAssetSerializations);
  77. return timeLineEventLogicGroup;
  78. }
  79. public float GetTimeLineEventLogicGroupForTime(string groupName, IFilterTimeLine filterTimeLine)
  80. {
  81. float maxTime = 1;
  82. List<TimeLineAssetSerialization> timeLineAssetSerializations =
  83. GetTimeLineAssetSerialization(groupName, filterTimeLine);
  84. for (int i = 0; i < timeLineAssetSerializations.Count; i++)
  85. {
  86. TimeLineAssetSerialization timeLineAssetSerialization = timeLineAssetSerializations[i];
  87. if (timeLineAssetSerialization is TineLineAnimationPlayableSerialization)
  88. {
  89. if (maxTime < timeLineAssetSerialization.endTime)
  90. {
  91. maxTime = timeLineAssetSerialization.endTime;
  92. }
  93. }
  94. }
  95. return maxTime;
  96. }
  97. public List<CurveInfo> GetTimeLineEventCurveInfos(string groupName, string guid, IFilterTimeLine filterTimeLine)
  98. {
  99. List<TimeLineAssetSerialization> timeLineAssetSerializations =
  100. GetTimeLineAssetSerialization(groupName, filterTimeLine);
  101. for (int i = 0; i < timeLineAssetSerializations.Count; i++)
  102. {
  103. TimeLineCurveSerializtion timeLineAssetSerialization =
  104. timeLineAssetSerializations[i] as TimeLineCurveSerializtion;
  105. if (timeLineAssetSerialization != null && timeLineAssetSerialization.guid.Equals(guid))
  106. {
  107. return timeLineAssetSerialization.CurveInfos;
  108. }
  109. }
  110. return null;
  111. }
  112. public ACurve GetTimeLineEventACurve(string groupName, string guid, IFilterTimeLine filterTimeLine)
  113. {
  114. List<TimeLineAssetSerialization> timeLineAssetSerializations =
  115. GetTimeLineAssetSerialization(groupName, filterTimeLine);
  116. for (int i = 0; i < timeLineAssetSerializations.Count; i++)
  117. {
  118. TimeLineCurveSerializtion timeLineAssetSerialization =
  119. timeLineAssetSerializations[i] as TimeLineCurveSerializtion;
  120. if (timeLineAssetSerialization != null && timeLineAssetSerialization.guid.Equals(guid))
  121. {
  122. ACurve aCurve = new ACurve();
  123. aCurve.CurveInfos= timeLineAssetSerialization.CurveInfos;
  124. return aCurve;
  125. }
  126. }
  127. return default;
  128. }
  129. public float GetTimeLineEventSkillForTime(string groupName, IFilterTimeLine filterTimeLine)
  130. {
  131. float maxTime = 0;
  132. List<TimeLineAssetSerialization> timeLineAssetSerializations =
  133. GetTimeLineAssetSerialization(groupName, filterTimeLine);
  134. for (int i = 0; i < timeLineAssetSerializations.Count; i++)
  135. {
  136. TimeLineAssetSerialization timeLineAssetSerialization = timeLineAssetSerializations[i];
  137. // if (timeLineAssetSerialization is TimeLineSpineSeralization)
  138. // {
  139. // return timeLineAssetSerialization.continuedTime;
  140. // }
  141. }
  142. return 0;
  143. }
  144. public float GetTimeLineEventSkillForPuaseTime(string groupName, IFilterTimeLine filterTimeLine)
  145. {
  146. float maxTime = 0;
  147. List<TimeLineAssetSerialization> timeLineAssetSerializations =
  148. GetTimeLineAssetSerialization(groupName, filterTimeLine);
  149. for (int i = 0; i < timeLineAssetSerializations.Count; i++)
  150. {
  151. TimeLineAssetSerialization timeLineAssetSerialization = timeLineAssetSerializations[i];
  152. if (timeLineAssetSerialization is TimeLineSkillStartSerializtion)
  153. {
  154. return timeLineAssetSerialization.continuedTime;
  155. }
  156. }
  157. return 0;
  158. }
  159. public List<TimeLineAssetSerialization> GetTimeLineAssetSerialization(string groupName,
  160. IFilterTimeLine filterTimeLine)
  161. {
  162. List<TimeLineAssetSerialization> currTimeLineAssetSerializations = new List<TimeLineAssetSerialization>();
  163. if (allAssetSerializations.TryGetValue(groupName,
  164. out List<TimeLineAssetSerialization> allInfo))
  165. {
  166. for (int i = 0; i < allInfo.Count; i++)
  167. {
  168. TimeLineAssetSerialization fxSerializtion = allInfo[i];
  169. if (fxSerializtion.groupName.Equals(groupName) && (filterTimeLine==null||filterTimeLine.Filter(fxSerializtion)))
  170. {
  171. currTimeLineAssetSerializations.Add(fxSerializtion);
  172. }
  173. }
  174. return allInfo;
  175. }
  176. return currTimeLineAssetSerializations;
  177. }
  178. }