private static void GenerateJsonStr(List <CsvGridData> variableNameList, List <CsvGridData> variableTypeList, string[] csvRowData, ref JArray jArray) { if (csvRowData.Length <= 0 || string.IsNullOrEmpty(csvRowData[0])) { return; } Dictionary <string, CsvVariableData> map = GenerateVariableNameToGridDataMap(variableNameList, variableTypeList); JObject obj = new JObject(); jArray.Add(obj); foreach (string variableName in map.Keys) { CsvVariableData variableData = map[variableName]; object property = m_parser.Parse(variableData, csvRowData); if (property != null) { obj.Add(new JProperty(variableData.variableName, property)); } } // for (int i = 0; i < variableNameList.Count; i++) // { // CsvGridData gridData = variableNameList[i]; // if (gridData.col >= 0 && gridData.col < csvRowData.Length) // { // object property = m_parser.Parse(variableTypeList[i].content, csvRowData[gridData.col]); // obj.Add(new JProperty(variableNameList[i].content, property)); // } // } }
public virtual object Parse(CsvVariableData data, string[] rowData) { switch (data.variableType) { case INT: return(IntParse(data, rowData)); case STRING: return(StringParse(data, rowData)); case BOOL: return(BoolParse(data, rowData)); case FLOAT: return(FloatParse(data, rowData)); case LONG: return(LongParse(data, rowData)); case LIST_STRING: return(ListStringParse(data, rowData)); case LIST_INT: return(ListIntParse(data, rowData)); case LIST_FLOAT: return(ListFloatParse(data, rowData)); } return(null); }
private string StringParse(CsvVariableData data, string[] rowData) { string v = string.Empty; if (Check(data, rowData)) { return(rowData[data.cols[0]]); } return(v); }
private int IntParse(CsvVariableData data, string[] rowData) { int v = 0; if (Check(data, rowData)) { if (!int.TryParse(rowData[data.cols[0]], out v)) { DebugError("IntParse", rowData[data.cols[0]]); } } return(v); }
private List <string> ListStringParse(CsvVariableData data, string[] rowData) { List <string> list = new List <string>(); for (int i = 0; i < data.cols.Count; i++) { int col = data.cols[i]; if (!string.IsNullOrEmpty(rowData[col])) { list.Add(rowData[col]); } } return(list); }
private long LongParse(CsvVariableData data, string[] rowData) { long v = 0; if (Check(data, rowData)) { if (!long.TryParse(rowData[data.cols[0]], out v)) { DebugError("LongParse", rowData[data.cols[0]]); } } return(v); }
private float FloatParse(CsvVariableData data, string[] rowData) { float v = 0f; if (Check(data, rowData)) { if (!float.TryParse(rowData[data.cols[0]], out v)) { DebugError("FloatParse", rowData[data.cols[0]]); } } return(v); }
private bool BoolParse(CsvVariableData data, string[] rowData) { bool v = true; if (Check(data, rowData)) { if (!bool.TryParse(rowData[data.cols[0]], out v)) { DebugError("BoolParse", rowData[data.cols[0]]); } } return(v); }
private List <float> ListFloatParse(CsvVariableData data, string[] rowData) { List <float> list = new List <float>(); for (int i = 0; i < data.cols.Count; i++) { int col = data.cols[i]; if (!string.IsNullOrEmpty(rowData[col])) { float v = FloatParse(rowData[col]); list.Add(v); } } return(list); }
private bool Check(CsvVariableData data, string[] rowData) { bool succss = true; for (int i = 0; i < data.cols.Count; i++) { if (!(data.cols.Count > 0 && data.cols[i] >= 0 && data.cols[i] < rowData.Length && !string.IsNullOrEmpty(rowData[data.cols[i]]))) { succss = false; break; } } return(succss); }
private static string GenerateCsStr(string name, List <CsvGridData> variableTypeList, List <CsvGridData> variableNameList) { StringBuilder code = new StringBuilder(); code.AppendLine("/**************************************************************************************************"); code.AppendLine(" 自动生成代码 请勿手动修改"); code.AppendLine("**************************************************************************************************/"); code.AppendLine(); //Append using code.AppendLine("using System.Collections;"); code.AppendLine("using System.Collections.Generic;"); code.AppendLine("using UnityEngine;"); code.AppendLine(); //Append config class code.AppendLine("[System.Serializable]"); code.AppendLine(string.Format("public class {0} : ConfigBase", name)); code.AppendLine("{"); string className = string.Format("{0}_Data", name); code.AppendLine(string.Format(" public List<{0}> _datas = new List<{1}>();", className, className)); code.AppendLine("}"); code.AppendLine(); //Append config data class code.AppendLine("[System.Serializable]"); code.AppendLine(string.Format("public class {0}_Data : ConfigData", name)); code.AppendLine("{"); Dictionary <string, CsvVariableData> map = GenerateVariableNameToGridDataMap(variableNameList, variableTypeList); foreach (string variableName in map.Keys) { CsvVariableData data = map[variableName]; string type = m_parser.ParseVariableType(data.variableType); string varName = data.variableName; string variable = string.Format(" public {0} {1};", type, varName); code.AppendLine(variable); } code.AppendLine("}"); return(code.ToString()); }
private static Dictionary <string, CsvVariableData> GenerateVariableNameToGridDataMap(List <CsvGridData> variableNameList, List <CsvGridData> variableTypeList) { Dictionary <string, CsvVariableData> map = new Dictionary <string, CsvVariableData>(); for (int i = 0; i < variableNameList.Count; i++) { CsvGridData variableNameData = variableNameList[i]; CsvGridData variableTypeData = variableTypeList[i]; if (!map.ContainsKey(variableNameData.content)) { CsvVariableData data = new CsvVariableData(variableNameData.content, variableTypeData.content); data.PushCol(variableNameData.col); map.Add(variableNameData.content, data); } else { CsvVariableData data = map[variableNameData.content]; data.PushCol(variableNameData.col); } } return(map); }