using System; using CustomUtility; using Definition.Enum; using UnityGameFramework.Runtime; namespace DataTable { public class DRLevel : DataRowBase { private int m_Id = 0; /// /// 获取关卡编号。 /// public override int Id => m_Id; /// /// 获取关卡内会生成的实体编号 /// public EnemyType[] EntityTypes { get; private set; } /// /// 获取关卡内每次生成实体的数量 /// public int[] EntityCounts { get; private set; } /// /// 获取关卡内生成实体的间隔时间 /// public float[] Intervals { get; private set; } /// /// 获取关卡时间。 /// public int Duration { get; private set; } public override bool ParseDataRow(string dataRowString, object userData) { string[] columnStrings = dataRowString.Split(DataTableExtension.DataSplitSeparators); int index = 0; index++; m_Id = int.Parse(columnStrings[index++]); index++; GenerateEntityTypes(columnStrings[index++]); GenerateEntityCounts(columnStrings[index++]); GenerateIntervals(columnStrings[index++]); Duration = int.Parse(columnStrings[index++]); GeneratePropertyArray(); return true; } private void GeneratePropertyArray() { } private void GenerateEntityTypes(string raw) { if (!raw.StartsWith('[') || !raw.EndsWith(']')) { throw new ArgumentException("Input must be enclosed in square brackets."); } if (raw.Length == 2) return; string[] entityIds = raw.Substring(1, raw.Length - 2).Split(","); int length = entityIds.Length; EntityTypes = new EnemyType[length]; for (int i = 0; i < length; i++) { EntityTypes[i] = EnumUtility.Get(entityIds[i]); } } private void GenerateEntityCounts(string raw) { if (!raw.StartsWith('[') || !raw.EndsWith(']')) { throw new ArgumentException("Input must be enclosed in square brackets."); } if (raw.Length == 2) return; string[] entityCounts = raw.Substring(1, raw.Length - 2).Split(","); int length = entityCounts.Length; EntityCounts = new int[length]; for (int i = 0; i < length; i++) { EntityCounts[i] = int.Parse(entityCounts[i]); } } private void GenerateIntervals(string raw) { if (!raw.StartsWith('[') || !raw.EndsWith(']')) { throw new ArgumentException("Input must be enclosed in square brackets."); } if (raw.Length == 2) return; string[] intervals = raw.Substring(1, raw.Length - 2).Split(","); int length = intervals.Length; Intervals = new float[length]; for (int i = 0; i < length; i++) { Intervals[i] = float.Parse(intervals[i]); } } } }