| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 | using System;using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using Fort23.Core;using Utility;namespace GameLogic.Combat.Hero{    public class CombatHeroTimeLineControl : IDisposable    {        private BetterList<TimeLineEventLogicGroupBasic> _currRunEventLogicGroupList =            new BetterList<TimeLineEventLogicGroupBasic>();        private ShowBaiscEntity combatHeroEntity;        private Map<string, TimeLienData> _addTimeLienDatas = new Map<string, TimeLienData>();        public void Init(ShowBaiscEntity combatHeroEntity)        {            this.combatHeroEntity = combatHeroEntity;        }        public void AddTimeLienData(string key, TimeLienData timeLienData)        {            _addTimeLienDatas.Add(key, timeLienData);        }        public void AddTimeLienData(TimeLienData timeLienData)        {            if (_addTimeLienDatas.ContainsKey(timeLienData.timeLineName))            {                return;            }            _addTimeLienDatas.Add(timeLienData.timeLineName, timeLienData);        }        public void RemoveTimeLineData(string key)        {            _addTimeLienDatas.Remove(key);        }        public void RemoveTimeLineData(TimeLienData timeLienData)        {            _addTimeLienDatas.Remove(timeLienData.timeLineName);        }        public TimeLineEventLogicGroupBasic AddEventLogicGroup(string groupName)        {            for (_addTimeLienDatas.Begin(); _addTimeLienDatas.Next();)            {                TimeLineEventLogicGroupBasic timeLineEventLogicGroup =                    _addTimeLienDatas.Value                        .GetTimeLineEventLogicGroup<TimeLineEventLogicGroupBasic>(groupName, null);                if (timeLineEventLogicGroup != null)                {                    timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null, 0);                    AddEventLogicGroup(timeLineEventLogicGroup);                }                return timeLineEventLogicGroup;            }            return null;        }        public T GetTimeLineEventInfo<T>(string groupName) where T : class        {            for (_addTimeLienDatas.Begin(); _addTimeLienDatas.Next();)            {                T timeLineEventLogicGroup =                    _addTimeLienDatas.Value                        .GetTimeLineEventInfo<T>(groupName, null);                if (timeLineEventLogicGroup != null)                {                    return timeLineEventLogicGroup;                }            }            return null;        }        public T GetTimeLineEventLogicGroup<T>(string groupName) where T : TimeLineEventLogicGroupBasic, new()        {            for (_addTimeLienDatas.Begin(); _addTimeLienDatas.Next();)            {                T timeLineEventLogicGroup =                    _addTimeLienDatas.Value                        .GetTimeLineEventLogicGroup<T>(groupName, null);                if (timeLineEventLogicGroup != null)                {                    return timeLineEventLogicGroup;                }            }            return null;        }        public T GetTimeLineEventLogicGroup<T>(string timeLineName, string groupName)            where T : TimeLineEventLogicGroupBasic, new()        {            if (string.IsNullOrEmpty(timeLineName))            {                return GetTimeLineEventLogicGroup<T>(groupName);            }            else            {                if (_addTimeLienDatas.TryGetValue(timeLineName, out TimeLienData timeLienData))                {                    T timeLineEventLogicGroup =                        _addTimeLienDatas.Value                            .GetTimeLineEventLogicGroup<T>(groupName, null);                    return timeLineEventLogicGroup;                }            }            return null;        }        public void AddEventLogicGroup(TimeLineEventLogicGroupBasic eventLogicGroup)        {            _currRunEventLogicGroupList.Add(eventLogicGroup);            eventLogicGroup.Update(0);        }        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();            _addTimeLienDatas.Clear();        }        public void ClearUpdateLogic()        {            for (int i = 0; i < _currRunEventLogicGroupList.Count; i++)            {                _currRunEventLogicGroupList[i].CloseLoopFx();            }                               }    }}
 |