using GeometryTD.CustomUtility; using GeometryTD.Definition; using UnityGameFramework.Runtime; namespace GeometryTD.DataTable { /// /// 局外道具掉落池配置表。 /// public class DROutGameDropPool : DataRowBase { private int m_Id = 0; public override int Id => m_Id; public LevelThemeType LevelThemeType { get; private set; } public RarityType Rarity { get; private set; } public string ItemType { get; private set; } public int ItemId { get; private set; } public int Weight { get; private set; } public int MinPhase { get; private set; } public int MaxPhase { get; private set; } public override bool ParseDataRow(string dataRowString, object userData) { string[] columnStrings = dataRowString.Split(DataTableExtension.DataSplitSeparators); for (int i = 0; i < columnStrings.Length; i++) { columnStrings[i] = columnStrings[i].Trim(DataTableExtension.DataTrimSeparators); } int index = 0; index++; m_Id = int.Parse(columnStrings[index++]); index++; LevelThemeType = EnumUtility.Get(columnStrings[index++]); Rarity = EnumUtility.Get(columnStrings[index++]); ItemType = columnStrings[index++]; ItemId = ParseIntOrDefault(columnStrings[index++], 0); Weight = ParseIntOrDefault(columnStrings[index++], 1); MinPhase = ParseIntOrDefault(columnStrings[index++], 1); MaxPhase = ParseIntOrDefault(columnStrings[index++], int.MaxValue); if (Weight <= 0) { Weight = 1; } if (MinPhase <= 0) { MinPhase = 1; } if (MaxPhase < MinPhase) { MaxPhase = MinPhase; } return true; } private static int ParseIntOrDefault(string raw, int fallbackValue) { if (int.TryParse(raw, out int parsed)) { return parsed; } return fallbackValue; } } }