geometry-tower-defense-base/src-ref/DataTable/DRTag.cs

69 lines
2.0 KiB
C#

using System;
using GeometryTD.Definition;
using GeometryTD.CustomUtility;
using UnityGameFramework.Runtime;
namespace GeometryTD.DataTable
{
/// <summary>
/// Tag 表
/// </summary>
public class DRTag : DataRowBase
{
private int m_Id = 0;
/// <summary>
/// 获取 Tag 编号
/// </summary>
public override int Id => m_Id;
/// <summary>
/// 获取 Tag 名
/// </summary>
public string Name { get; private set; }
public TagType TagType => (TagType)m_Id;
public string TagGroupText { get; private set; }
public RarityType MinRarity { get; private set; }
public int Weight { get; private set; }
public bool IsImplemented { 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++;
Name = columnStrings[index++];
bool hasExtendedColumns = columnStrings.Length - index >= 4;
if (hasExtendedColumns)
{
TagGroupText = columnStrings[index++];
MinRarity = EnumUtility<RarityType>.Get(columnStrings[index++]);
Weight = int.Parse(columnStrings[index++]);
IsImplemented = bool.Parse(columnStrings[index++]);
}
else
{
TagGroupText = string.Empty;
MinRarity = EnumUtility<RarityType>.Get(columnStrings[index++]);
Weight = int.Parse(columnStrings[index++]);
IsImplemented = true;
}
return true;
}
}
}