using UnityGameFramework.Runtime; using Newtonsoft.Json.Linq; namespace GeometryTD.DataTable { /// /// 事件配置表 /// public class DREvent : DataRowBase { private int m_Id = 0; /// /// 获取事件编号 /// public override int Id => m_Id; /// /// 获取事件题目 /// public string Title { get; private set; } /// /// 获取事件描述 /// public string Description { get; private set; } /// /// 获取事件选项 /// /// 原始字符串(如 JSON 文本),不在此处做解析。 public string OptionsRaw { get; private set; } public string Option1Raw { get; private set; } public string Option2Raw { get; private set; } public string Option3Raw { get; private set; } public string Option4Raw { 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++; Title = columnStrings[index++]; Description = columnStrings[index++]; Option1Raw = columnStrings[index++]; Option2Raw = columnStrings[index++]; Option3Raw = columnStrings[index++]; Option4Raw = columnStrings[index++]; OptionsRaw = BuildOptionsRaw(Option1Raw, Option2Raw, Option3Raw, Option4Raw); return true; } private static string BuildOptionsRaw(params string[] optionColumns) { JArray array = new JArray(); for (int i = 0; i < optionColumns.Length; i++) { string optionRaw = optionColumns[i]; if (string.IsNullOrWhiteSpace(optionRaw)) { continue; } array.Add(JObject.Parse(optionRaw)); } return array.ToString(Newtonsoft.Json.Formatting.None); } } }