public static WaveElement Create(WaveElementData waveElementData, float cumulativeTime)
        {
            WaveElement waveElement = ReferencePool.Acquire <WaveElement>();

            waveElement.waveElementData = waveElementData;
            waveElement.CumulativeTime  = cumulativeTime;
            return(waveElement);
        }
Example #2
0
        public WaveElementData[] GetAllWaveElementData()
        {
            int index = 0;

            WaveElementData[] results = new WaveElementData[dicWaveElementData.Count];
            foreach (var waveElementData in dicWaveElementData.Values)
            {
                results[index++] = waveElementData;
            }

            return(results);
        }
Example #3
0
        protected override void OnLoad()
        {
            dtWave = GameEntry.DataTable.GetDataTable <DRWave>();
            if (dtWave == null)
            {
                throw new System.Exception("Can not get data table Item");
            }

            dtWaveElement = GameEntry.DataTable.GetDataTable <DRWaveElement>();
            if (dtWaveElement == null)
            {
                throw new System.Exception("Can not get data table ItemGroup");
            }

            dicWaveData        = new Dictionary <int, WaveData>();
            dicWaveElementData = new Dictionary <int, WaveElementData>();

            DRWaveElement[] dRWaveElements = dtWaveElement.GetAllDataRows();
            foreach (var dRWaveElement in dRWaveElements)
            {
                if (dicWaveElementData.ContainsKey(dRWaveElement.Id))
                {
                    Log.Error("WaveElement id duplicate:{0}.", dRWaveElement.Id);
                    continue;
                }

                dicWaveElementData.Add(dRWaveElement.Id, new WaveElementData(dRWaveElement));
            }

            DRWave[] dRWaves = dtWave.GetAllDataRows();
            foreach (var dRWave in dRWaves)
            {
                int[] waveElementRange = dRWave.WaveElements;
                if (waveElementRange.Length != 2)
                {
                    throw new System.Exception(string.Format("Wave data 'WaveElements' length error,current is '{0}', should be 2", waveElementRange.Length));
                }

                int startIndex = waveElementRange[0];
                int endIndex   = waveElementRange[1];

                if (endIndex < startIndex)
                {
                    throw new System.Exception("Wave element index invaild,EndIndex should smaller than StartIndex.");
                }

                WaveElementData[] waveElementDatas = new WaveElementData[endIndex - startIndex + 1];

                int index = 0;
                for (int i = startIndex; i <= endIndex; i++)
                {
                    WaveElementData waveElementData = null;
                    if (!dicWaveElementData.TryGetValue(i, out waveElementData))
                    {
                        throw new System.Exception("Can not find WaveElementDat id :" + i);
                    }
                    waveElementDatas[index++] = waveElementData;
                }

                dicWaveData.Add(dRWave.Id, new WaveData(dRWave, waveElementDatas));
            }
        }
 public void Clear()
 {
     waveElementData = null;
     CumulativeTime  = 0;
 }
 public WaveElement()
 {
     waveElementData = null;
     CumulativeTime  = 0;
 }