using System; using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic; using Fort23.Core; namespace GameLogic.Combat.Hero { public class CombatHeroTimeLineControl : IDisposable { public TimeLienData TimeLineData { get { return _timeLineData; } } public TimeLienData _timeLineData; private BetterList _currRunEventLogicGroupList = new BetterList(); private CombatHeroEntity combatHeroEntity; public void Init(CombatHeroEntity combatHeroEntity, TimeLienData timeLienData) { this.combatHeroEntity = combatHeroEntity; _timeLineData = timeLienData; } public TimeLineEventLogicGroupBasic AddEventLogicGroup(string groupName) { TimeLineEventLogicGroupBasic timeLineEventLogicGroup = combatHeroEntity.combatHeroTimeLineControl.TimeLineData .GetTimeLineEventLogicGroup(groupName, null); if (timeLineEventLogicGroup != null) { timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null); combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup(timeLineEventLogicGroup); } return timeLineEventLogicGroup; } public void AddEventLogicGroup(TimeLineEventLogicGroupBasic eventLogicGroup) { _currRunEventLogicGroupList.Add(eventLogicGroup); } public void RemoveEventLogicGroup(TimeLineEventLogicGroupBasic eventLogicGroup) { _currRunEventLogicGroupList.Remove(eventLogicGroup); } public void Update(float deltaTime) { for (int i = 0; i < _currRunEventLogicGroupList.size; i++) { TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic = _currRunEventLogicGroupList[i]; bool isEnd = timeLineEventLogicGroupBasic.Update(deltaTime); if (isEnd) { _currRunEventLogicGroupList.Remove(timeLineEventLogicGroupBasic); CObjectPool.Instance.Recycle(timeLineEventLogicGroupBasic); } } } public void Dispose() { _currRunEventLogicGroupList.Clear(); _timeLineData = null; } } }