CombatHeroTimeLineControl.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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 CombatHeroEntity combatHeroEntity;
  12. private Map<string, TimeLienData> _addTimeLienDatas = new Map<string, TimeLienData>();
  13. public void Init(CombatHeroEntity 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. combatHeroEntity.combatHeroTimeLineControl.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. return timeLineEventLogicGroup;
  57. }
  58. return null;
  59. }
  60. public T GetTimeLineEventLogicGroup<T>(string timeLineName, string groupName)
  61. where T : TimeLineEventLogicGroupBasic, new()
  62. {
  63. if (string.IsNullOrEmpty(timeLineName))
  64. {
  65. return GetTimeLineEventLogicGroup<T>(groupName);
  66. }
  67. else
  68. {
  69. if (_addTimeLienDatas.TryGetValue(timeLineName, out TimeLienData timeLienData))
  70. {
  71. T timeLineEventLogicGroup =
  72. _addTimeLienDatas.Value
  73. .GetTimeLineEventLogicGroup<T>(groupName, null);
  74. return timeLineEventLogicGroup;
  75. }
  76. }
  77. return null;
  78. }
  79. public void AddEventLogicGroup(TimeLineEventLogicGroupBasic eventLogicGroup)
  80. {
  81. _currRunEventLogicGroupList.Add(eventLogicGroup);
  82. eventLogicGroup.Update(0);
  83. }
  84. public void RemoveEventLogicGroup(TimeLineEventLogicGroupBasic eventLogicGroup)
  85. {
  86. _currRunEventLogicGroupList.Remove(eventLogicGroup);
  87. }
  88. public void Update(float deltaTime)
  89. {
  90. for (int i = 0; i < _currRunEventLogicGroupList.size; i++)
  91. {
  92. TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic = _currRunEventLogicGroupList[i];
  93. bool isEnd = timeLineEventLogicGroupBasic.Update(deltaTime);
  94. if (isEnd)
  95. {
  96. _currRunEventLogicGroupList.Remove(timeLineEventLogicGroupBasic);
  97. CObjectPool.Instance.Recycle(timeLineEventLogicGroupBasic);
  98. }
  99. }
  100. }
  101. public void Dispose()
  102. {
  103. _currRunEventLogicGroupList.Clear();
  104. _addTimeLienDatas.Clear();
  105. }
  106. }
  107. }