123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- 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();
- }
- }
- }
|