CombatHeroTimeLineControl.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. _addTimeLienDatas.Add(timeLienData.timeLineName, timeLienData);
  24. }
  25. public void RemoveTimeLineData(string key)
  26. {
  27. _addTimeLienDatas.Remove(key);
  28. }
  29. public void RemoveTimeLineData(TimeLienData timeLienData)
  30. {
  31. _addTimeLienDatas.Remove(timeLienData.timeLineName);
  32. }
  33. public TimeLineEventLogicGroupBasic AddEventLogicGroup(string groupName)
  34. {
  35. for (_addTimeLienDatas.Begin(); _addTimeLienDatas.Next();)
  36. {
  37. TimeLineEventLogicGroupBasic timeLineEventLogicGroup =
  38. _addTimeLienDatas.Value
  39. .GetTimeLineEventLogicGroup<TimeLineEventLogicGroupBasic>(groupName, null);
  40. if (timeLineEventLogicGroup != null)
  41. {
  42. timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null);
  43. AddEventLogicGroup(timeLineEventLogicGroup);
  44. }
  45. return timeLineEventLogicGroup;
  46. }
  47. return null;
  48. }
  49. public T GetTimeLineEventLogicGroup<T>(string groupName) where T : TimeLineEventLogicGroupBasic, new()
  50. {
  51. for (_addTimeLienDatas.Begin(); _addTimeLienDatas.Next();)
  52. {
  53. T timeLineEventLogicGroup =
  54. _addTimeLienDatas.Value
  55. .GetTimeLineEventLogicGroup<T>(groupName, null);
  56. if (timeLineEventLogicGroup != null)
  57. {
  58. return timeLineEventLogicGroup;
  59. }
  60. }
  61. return null;
  62. }
  63. public T GetTimeLineEventLogicGroup<T>(string timeLineName, string groupName)
  64. where T : TimeLineEventLogicGroupBasic, new()
  65. {
  66. if (string.IsNullOrEmpty(timeLineName))
  67. {
  68. return GetTimeLineEventLogicGroup<T>(groupName);
  69. }
  70. else
  71. {
  72. if (_addTimeLienDatas.TryGetValue(timeLineName, out TimeLienData timeLienData))
  73. {
  74. T timeLineEventLogicGroup =
  75. _addTimeLienDatas.Value
  76. .GetTimeLineEventLogicGroup<T>(groupName, null);
  77. return timeLineEventLogicGroup;
  78. }
  79. }
  80. return null;
  81. }
  82. public void AddEventLogicGroup(TimeLineEventLogicGroupBasic eventLogicGroup)
  83. {
  84. _currRunEventLogicGroupList.Add(eventLogicGroup);
  85. eventLogicGroup.Update(0);
  86. }
  87. public void RemoveEventLogicGroup(TimeLineEventLogicGroupBasic eventLogicGroup)
  88. {
  89. _currRunEventLogicGroupList.Remove(eventLogicGroup);
  90. }
  91. public void Update(float deltaTime)
  92. {
  93. for (int i = 0; i < _currRunEventLogicGroupList.size; i++)
  94. {
  95. TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic = _currRunEventLogicGroupList[i];
  96. bool isEnd = timeLineEventLogicGroupBasic.Update(deltaTime);
  97. if (isEnd)
  98. {
  99. _currRunEventLogicGroupList.Remove(timeLineEventLogicGroupBasic);
  100. CObjectPool.Instance.Recycle(timeLineEventLogicGroupBasic);
  101. }
  102. }
  103. }
  104. public void Dispose()
  105. {
  106. _currRunEventLogicGroupList.Clear();
  107. _addTimeLienDatas.Clear();
  108. }
  109. }
  110. }