| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 | using System;using System.Collections.Generic;using CombatCore.SerializationTimeLine;using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using CombatLibrary.CombatLibrary.CombatCore.Utility;using Fort23.Core;using Fort23.UTool;using Utility;#if !COMBAT_SERVERusing UnityEngine;#endif[System.Serializable]public class TimeLienData{    public string timeLineName;    public List<string> key = new List<string>();    public List<string> value = new List<string>();    public string heroName;    public Map<string, List<TimeLineAssetSerialization>> allAssetSerializations =        new Map<string, List<TimeLineAssetSerialization>>();    public BetterList<string> allAssetSerializationsKeys = new BetterList<string>();    // public TimeLineAssetSerialization[] GetAllTimeLineAssetSerialization    // {    //     get { return allAssetSerializations.ToArray(); }    // }    public TimeLienData Clone()    {        TimeLienData timeLienData = (TimeLienData)this.MemberwiseClone();        timeLienData.DeserializeData();        return timeLienData;    }    /// <summary>    /// 反序列化    /// </summary>    public void DeserializeData()    {        allAssetSerializations.Clear();        allAssetSerializationsKeys.Clear();        for (int i = 0; i < key.Count; i++)        {            Type type = System.Type.GetType(key[i]);            if (type != null)            {                TimeLineAssetSerialization timeLineAssetSerialization =                    (TimeLineAssetSerialization)JsonManager.FromJson(value[i], type);                if (allAssetSerializations.TryGetValue(timeLineAssetSerialization.groupName,                        out List<TimeLineAssetSerialization> info))                {                    info.Add(timeLineAssetSerialization);                }                else                {                    info = new List<TimeLineAssetSerialization>();                    info.Add(timeLineAssetSerialization);                    string keys = timeLineAssetSerialization.groupName;                    allAssetSerializations.Add(keys, info);                    allAssetSerializationsKeys.Add(keys);                }            }            else            {                LogTool.Error(key[i] + "失败");            }        }    }    public T GetTimeLineEventLogicGroup<T>(string groupName, IFilterTimeLine filterTimeLine)        where T : TimeLineEventLogicGroupBasic, new()    {        if (string.IsNullOrEmpty(groupName))        {            return null;        }        List<TimeLineAssetSerialization> timeLineAssetSerializations =            GetTimeLineAssetSerialization(groupName, filterTimeLine);        if (timeLineAssetSerializations==null||timeLineAssetSerializations.Count <= 0)        {            // LogTool.Log("没有时间线" + groupName);            return null;        }        T timeLineEventLogicGroup = CObjectPool.Instance.Fetch<T>();        timeLineEventLogicGroup.groupName = groupName;        timeLineEventLogicGroup.Init(timeLineAssetSerializations);        return timeLineEventLogicGroup;    }    public float GetTimeLineEventLogicGroupForTime(string groupName, IFilterTimeLine filterTimeLine)    {        float maxTime = 1;        List<TimeLineAssetSerialization> timeLineAssetSerializations =            GetTimeLineAssetSerialization(groupName, filterTimeLine);        for (int i = 0; i < timeLineAssetSerializations.Count; i++)        {            TimeLineAssetSerialization timeLineAssetSerialization = timeLineAssetSerializations[i];            if (timeLineAssetSerialization is TineLineAnimationPlayableSerialization)            {                if (maxTime < timeLineAssetSerialization.endTime)                {                    maxTime = timeLineAssetSerialization.endTime;                }            }        }        return maxTime;    }    public T GetTimeLineEventInfo<T>(string groupName,IFilterTimeLine filterTimeLine) where T : class    {        List<TimeLineAssetSerialization> timeLineAssetSerializations =            GetTimeLineAssetSerialization(groupName, filterTimeLine);        for (int i = 0; i < timeLineAssetSerializations.Count; i++)        {                    if (timeLineAssetSerializations[i] is T )            {                return timeLineAssetSerializations[i] as T;            }        }        return null;    }    public List<CurveInfo> GetTimeLineEventCurveInfos(string groupName, string guid, IFilterTimeLine filterTimeLine)    {        List<TimeLineAssetSerialization> timeLineAssetSerializations =            GetTimeLineAssetSerialization(groupName, filterTimeLine);        for (int i = 0; i < timeLineAssetSerializations.Count; i++)        {            TimeLineCurveSerializtion timeLineAssetSerialization =                timeLineAssetSerializations[i] as TimeLineCurveSerializtion;            if (timeLineAssetSerialization != null && timeLineAssetSerialization.guid.Equals(guid))            {                return timeLineAssetSerialization.CurveInfos;            }        }        return null;    }    public ACurve GetTimeLineEventACurve(string groupName, string guid, IFilterTimeLine filterTimeLine)    {        List<TimeLineAssetSerialization> timeLineAssetSerializations =            GetTimeLineAssetSerialization(groupName, filterTimeLine);        for (int i = 0; i < timeLineAssetSerializations.Count; i++)        {            TimeLineCurveSerializtion timeLineAssetSerialization =                timeLineAssetSerializations[i] as TimeLineCurveSerializtion;            if (timeLineAssetSerialization != null && timeLineAssetSerialization.guid.Equals(guid))            {                ACurve aCurve = new ACurve();                aCurve.CurveInfos = timeLineAssetSerialization.CurveInfos;                return aCurve;            }        }        return default;    }    public float GetTimeLineEventSkillForTime(string groupName, IFilterTimeLine filterTimeLine)    {        float maxTime = 0;        List<TimeLineAssetSerialization> timeLineAssetSerializations =            GetTimeLineAssetSerialization(groupName, filterTimeLine);        for (int i = 0; i < timeLineAssetSerializations.Count; i++)        {            TimeLineAssetSerialization timeLineAssetSerialization = timeLineAssetSerializations[i];            // if (timeLineAssetSerialization is TimeLineSpineSeralization)            // {            //     return timeLineAssetSerialization.continuedTime;            // }        }        return 0;    }    public float GetTimeLineEventSkillForPuaseTime(string groupName, IFilterTimeLine filterTimeLine)    {        float maxTime = 0;        List<TimeLineAssetSerialization> timeLineAssetSerializations =            GetTimeLineAssetSerialization(groupName, filterTimeLine);        for (int i = 0; i < timeLineAssetSerializations.Count; i++)        {            TimeLineAssetSerialization timeLineAssetSerialization = timeLineAssetSerializations[i];            if (timeLineAssetSerialization is TimeLineSkillStartSerializtion)            {                return timeLineAssetSerialization.continuedTime;            }        }        return 0;    }    public List<TimeLineAssetSerialization> GetTimeLineAssetSerialization(string groupName,        IFilterTimeLine filterTimeLine)    {        // List<TimeLineAssetSerialization> currTimeLineAssetSerializations = new List<TimeLineAssetSerialization>();        if (allAssetSerializations.TryGetValue(groupName,                out List<TimeLineAssetSerialization> allInfo))        {            // for (int i = 0; i < allInfo.Count; i++)            // {            //     TimeLineAssetSerialization fxSerializtion = allInfo[i];            //     if (fxSerializtion.groupName.Equals(groupName) &&            //         (filterTimeLine == null || filterTimeLine.Filter(fxSerializtion)))            //     {            //         currTimeLineAssetSerializations.Add(fxSerializtion);            //     }            // }            return allInfo;        }        return null;    }}
 |