CombatHeroTimeLineControl.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. using System;
  2. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  3. using Fort23.Core;
  4. using Utility;
  5. namespace GameLogic.Combat.Hero
  6. {
  7. public class CombatHeroTimeLineControl : IDisposable
  8. {
  9. private BetterList<TimeLineEventLogicGroupBasic> _currRunEventLogicGroupList =
  10. new BetterList<TimeLineEventLogicGroupBasic>();
  11. private ShowBaiscEntity combatHeroEntity;
  12. private Map<string, TimeLienData> _addTimeLienDatas = new Map<string, TimeLienData>();
  13. public void Init(ShowBaiscEntity combatHeroEntity)
  14. {
  15. this.combatHeroEntity = combatHeroEntity;
  16. }
  17. public void AddTimeLienData(string key, TimeLienData timeLienData)
  18. {
  19. _addTimeLienDatas.Add(key, timeLienData);
  20. }
  21. public void AddTimeLienData(TimeLienData timeLienData)
  22. {
  23. if (_addTimeLienDatas.ContainsKey(timeLienData.timeLineName))
  24. {
  25. return;
  26. }
  27. _addTimeLienDatas.Add(timeLienData.timeLineName, timeLienData);
  28. }
  29. public void RemoveTimeLineData(string key)
  30. {
  31. _addTimeLienDatas.Remove(key);
  32. }
  33. public void RemoveTimeLineData(TimeLienData timeLienData)
  34. {
  35. _addTimeLienDatas.Remove(timeLienData.timeLineName);
  36. }
  37. public TimeLineEventLogicGroupBasic AddEventLogicGroup(string groupName)
  38. {
  39. for (_addTimeLienDatas.Begin(); _addTimeLienDatas.Next();)
  40. {
  41. TimeLineEventLogicGroupBasic timeLineEventLogicGroup =
  42. _addTimeLienDatas.Value
  43. .GetTimeLineEventLogicGroup<TimeLineEventLogicGroupBasic>(groupName, null);
  44. if (timeLineEventLogicGroup != null)
  45. {
  46. timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null, 0);
  47. AddEventLogicGroup(timeLineEventLogicGroup);
  48. }
  49. return timeLineEventLogicGroup;
  50. }
  51. return null;
  52. }
  53. public T GetTimeLineEventInfo<T>(string groupName) where T : class
  54. {
  55. for (_addTimeLienDatas.Begin(); _addTimeLienDatas.Next();)
  56. {
  57. T timeLineEventLogicGroup =
  58. _addTimeLienDatas.Value
  59. .GetTimeLineEventInfo<T>(groupName, null);
  60. if (timeLineEventLogicGroup != null)
  61. {
  62. return timeLineEventLogicGroup;
  63. }
  64. }
  65. return null;
  66. }
  67. public T GetTimeLineEventLogicGroup<T>(string groupName) where T : TimeLineEventLogicGroupBasic, new()
  68. {
  69. for (_addTimeLienDatas.Begin(); _addTimeLienDatas.Next();)
  70. {
  71. T timeLineEventLogicGroup =
  72. _addTimeLienDatas.Value
  73. .GetTimeLineEventLogicGroup<T>(groupName, null);
  74. if (timeLineEventLogicGroup != null)
  75. {
  76. return timeLineEventLogicGroup;
  77. }
  78. }
  79. return null;
  80. }
  81. public T GetTimeLineEventLogicGroup<T>(string timeLineName, string groupName)
  82. where T : TimeLineEventLogicGroupBasic, new()
  83. {
  84. if (string.IsNullOrEmpty(timeLineName))
  85. {
  86. return GetTimeLineEventLogicGroup<T>(groupName);
  87. }
  88. else
  89. {
  90. if (_addTimeLienDatas.TryGetValue(timeLineName, out TimeLienData timeLienData))
  91. {
  92. T timeLineEventLogicGroup =
  93. _addTimeLienDatas.Value
  94. .GetTimeLineEventLogicGroup<T>(groupName, null);
  95. return timeLineEventLogicGroup;
  96. }
  97. }
  98. return null;
  99. }
  100. public void AddEventLogicGroup(TimeLineEventLogicGroupBasic eventLogicGroup)
  101. {
  102. _currRunEventLogicGroupList.Add(eventLogicGroup);
  103. eventLogicGroup.Update(0);
  104. }
  105. public void RemoveEventLogicGroup(TimeLineEventLogicGroupBasic eventLogicGroup)
  106. {
  107. _currRunEventLogicGroupList.Remove(eventLogicGroup);
  108. }
  109. public void Update(float deltaTime)
  110. {
  111. for (int i = 0; i < _currRunEventLogicGroupList.size; i++)
  112. {
  113. TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic = _currRunEventLogicGroupList[i];
  114. bool isEnd = timeLineEventLogicGroupBasic.Update(deltaTime);
  115. if (isEnd)
  116. {
  117. _currRunEventLogicGroupList.Remove(timeLineEventLogicGroupBasic);
  118. CObjectPool.Instance.Recycle(timeLineEventLogicGroupBasic);
  119. }
  120. }
  121. }
  122. public void Dispose()
  123. {
  124. _currRunEventLogicGroupList.Clear();
  125. _addTimeLienDatas.Clear();
  126. }
  127. }
  128. }