From 57d8018b909bb87bf9af486b7008b7ca7b8157e7 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期一, 13 十一月 2023 12:17:58 +0800 Subject: [PATCH] 0312 读表增加对数组和二维数组的解析 --- Assets/Editor/Tool/ConfigClassGenerate.cs | 697 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 356 insertions(+), 341 deletions(-) diff --git a/Assets/Editor/Tool/ConfigClassGenerate.cs b/Assets/Editor/Tool/ConfigClassGenerate.cs index 0efc865..076c642 100644 --- a/Assets/Editor/Tool/ConfigClassGenerate.cs +++ b/Assets/Editor/Tool/ConfigClassGenerate.cs @@ -1,341 +1,356 @@ -锘縰sing System.Collections; -using System.Collections.Generic; -using UnityEditor.ProjectWindowCallback; -using UnityEngine; -using UnityEditor; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System; -using UnityEngine.Events; - -public class CreateConfigClassFile -{ - - const string retract1 = "\t"; - const string retract2 = "\t\t"; - const string retract3 = "\t\t\t"; - const string retract4 = "\t\t\t\t"; - const string retract5 = "\t\t\t\t\t"; - - public static event UnityAction FileCreateEvent; - - public static string filedContent = string.Empty; - public static string readContent = string.Empty; - - - [UnityEditor.MenuItem("Assets/鐢熸垚閰嶇疆瑙f瀽绫诲瀷")] - public static void GenerateConfigClass() - { - - if (Selection.objects != null) - { - foreach (var o in Selection.objects) - { - var path = AssetDatabase.GetAssetPath(o.GetInstanceID()); - if (path.EndsWith(".txt") || path.EndsWith(".TXT")) - { - CreateConfigClass(new FileInfo(path)); - } - } - - AssetDatabase.Refresh(); - } - } - - public static void CreateConfigClass(FileInfo fileInfo, bool isIL = false) - { - var lines = File.ReadAllLines(fileInfo.FullName); - if (lines.Length > 2) - { - var typeLine = lines[0]; - var fieldLine = lines[1]; - var types = typeLine.Split('\t'); - var fields = fieldLine.Split('\t'); - var min = Mathf.Min(types.Length, fields.Length); - var fieldFulls = new List<string>(); - var readFulls = new List<string>(); - - int index = 0; - for (int j = 0; j < min; j++) - { - var type = types[j]; - var field = fields[j]; - var fieldstring = GetField(type, field); - var readString = GetRead(type, field, index); - if (!string.IsNullOrEmpty(fieldstring)) - { - fieldFulls.Add(fieldstring); - } - - if (!string.IsNullOrEmpty(readString)) - { - index++; - readFulls.Add(readString); - } - } - - filedContent = string.Join("\r\n\t", fieldFulls.ToArray()); - readContent = string.Join("\r\n\r\n\t\t\t", readFulls.ToArray()); - CreatNewConfigClass(fileInfo.Name.Substring(0, fileInfo.Name.IndexOf('.')), isIL); - } - - } - - public static string GetField(string type, string field) - { - field = field.Replace(" ", ""); - if (type.Contains("int[]")) - { - return StringUtility.Contact("public readonly int[] ", field.Trim(), ";"); - } - else if (type.Contains("Int2[]")) - { - return StringUtility.Contact("public readonly Int2[] ", field.Trim(), ";"); - } - else if (type.Contains("Int3[]")) - { - return StringUtility.Contact("public readonly Int3[] ", field.Trim(), ";"); - } - else if (type.Contains("float[]")) - { - return StringUtility.Contact("public readonly float[] ", field.Trim(), ";"); - } - else if (type.Contains("string[]")) - { - return StringUtility.Contact("public readonly string[] ", field.Trim(), ";"); - } - else if (type.Contains("Vector3[]")) - { - return StringUtility.Contact("public readonly Vector3[] ", field.Trim(), ";"); - } - else if (type.Contains("int")) - { - return StringUtility.Contact("public readonly int ", field.Trim(), ";"); - } - else if (type.Contains("long")) - { - return StringUtility.Contact("public readonly long ", field.Trim(), ";"); - } - else if (type.Contains("float")) - { - return StringUtility.Contact("public readonly float ", field.Trim(), ";"); - } - else if (type.Contains("string")) - { - return StringUtility.Contact("public readonly string ", field, ";"); - } - else if (type.Contains("Vector3")) - { - return StringUtility.Contact("public readonly Vector3 ", field.Trim(), ";"); - } - else if (type.Contains("bool")) - { - return StringUtility.Contact("public readonly bool ", field.Trim(), ";"); - } - else if (type.Contains("Int2")) - { - return StringUtility.Contact("public readonly Int2 ", field.Trim(), ";"); - } - else if (type.Contains("Int3")) - { - return StringUtility.Contact("public readonly Int3 ", field.Trim(), ";"); - } - else - { - return string.Empty; - } - } - - public static string GetRead(string type, string field, int index) - { - field = field.Replace(" ", ""); - if (type.Contains("int[]")) - { - var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); - var line2 = StringUtility.Contact(retract3, field, " = ", "new int", "[", field, "StringArray.Length]", ";", "\n"); - var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); - var line4 = StringUtility.Contact(retract3, "{\n"); - var line5 = StringUtility.Contact(retract4, " int.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); - var line6 = StringUtility.Contact(retract3, "}"); - - return StringUtility.Contact(line1, line2, line3, line4, line5, line6); - } - else if (type.Contains("Int2[]")) - { - var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); - var line2 = StringUtility.Contact(retract3, field, " = ", "new Int2", "[", field, "StringArray.Length]", ";", "\n"); - var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); - var line4 = StringUtility.Contact(retract3, "{\n"); - var line5 = StringUtility.Contact(retract4, " Int2.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); - var line6 = StringUtility.Contact(retract3, "}"); - - return StringUtility.Contact(line1, line2, line3, line4, line5, line6); - } - else if (type.Contains("Int3[]")) - { - var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); - var line2 = StringUtility.Contact(retract3, field, " = ", "new Int3", "[", field, "StringArray.Length]", ";", "\n"); - var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); - var line4 = StringUtility.Contact(retract3, "{\n"); - var line5 = StringUtility.Contact(retract4, " Int3.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); - var line6 = StringUtility.Contact(retract3, "}"); - - return StringUtility.Contact(line1, line2, line3, line4, line5, line6); - } - else if (type.Contains("float[]")) - { - var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); - var line2 = StringUtility.Contact(retract3, field, " = ", "new float", "[", field, "StringArray.Length", "]", ";", "\n"); - var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); - var line4 = StringUtility.Contact(retract3, "{\n"); - var line5 = StringUtility.Contact(retract4, " float.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); - var line6 = StringUtility.Contact(retract3, "}"); - - return StringUtility.Contact(line1, line2, line3, line4, line5, line6); - } - else if (type.Contains("string[]")) - { - var line1 = StringUtility.Contact(field, " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);"); - return line1; - } - else if (type.Contains("Vector3[]")) - { - var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); - var line2 = StringUtility.Contact(retract3, field, " = ", "new Vector3", "[", field, "StringArray.Length", "]", ";", "\n"); - var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); - var line4 = StringUtility.Contact(retract3, "{\n"); - var line5 = StringUtility.Contact(retract4, field, "[i]", "=", field, "StringArray", "[i]", ".Vector3Parse()", ";", "\n"); - var line6 = StringUtility.Contact(retract3, "}"); - - return StringUtility.Contact(line1, line2, line3, line4, line5, line6); - } - else if (type.Contains("int")) - { - return StringUtility.Contact("int.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); - } - else if (type.Contains("long")) - { - return StringUtility.Contact("long.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); - } - else if (type.Contains("float")) - { - return StringUtility.Contact("float.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); - } - else if (type.Contains("string")) - { - return StringUtility.Contact(field, " = ", "tables", "[", index, "]", ";"); - } - else if (type.Contains("Vector3")) - { - return StringUtility.Contact(field, "=", "tables", "[", index, "]", ".Vector3Parse()", ";"); - } - else if (type.Contains("bool")) - { - var line1 = StringUtility.Contact("var ", field, "Temp", " = 0", ";", "\n"); - var line2 = StringUtility.Contact(retract3, "int.TryParse(tables", "[", index, "]", ",", "out ", field, "Temp", ")", "; ", "\n"); - var line3 = StringUtility.Contact(retract3, field, "=", field, "Temp", "!=0", ";"); - return StringUtility.Contact(line1, line2, line3); - } - else if (type.Contains("Int2")) - { - return StringUtility.Contact("Int2.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); - } - else if (type.Contains("Int3")) - { - return StringUtility.Contact("Int3.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); - } - else - { - return string.Empty; - } - } - - static string configClassPath = "Assets/Scripts/Core/GameEngine/Model/Config"; - static string configILClassPath = "LogicProject/Src/Config"; - static string templatePath = "Assets/Editor/ScriptTemplate/ConfigDataTemplate.txt"; - - public static void CreatNewConfigClass(string _name, bool isIL) - { - string newConfigPath; - if (isIL) - { - newConfigPath = configILClassPath + string.Format("/IL{0}Config.cs", _name); - } - else - { - newConfigPath = configClassPath + string.Format("/{0}Config.cs", _name); - } - AssetDatabase.DeleteAsset(newConfigPath); - UnityEngine.Object o = CreateScriptAssetFromTemplate(newConfigPath, templatePath, isIL); - ProjectWindowUtil.ShowCreatedAsset(o); - } - - internal static UnityEngine.Object CreateScriptAssetFromTemplate(string pathName, string resourceFile, bool isIL) - { - string fullPath = Path.GetFullPath(pathName); - - StreamReader streamReader = new StreamReader(resourceFile); - string text = streamReader.ReadToEnd(); - streamReader.Close(); - string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(pathName); - text = Regex.Replace(text, "#ClassName*#", fileNameWithoutExtension); - text = Regex.Replace(text, "#DateTime#", System.DateTime.Now.ToLongDateString()); - text = Regex.Replace(text, "#Field#", CreateConfigClassFile.filedContent); - text = Regex.Replace(text, "#Read#", CreateConfigClassFile.readContent); - if (isIL) - { - text = Regex.Replace(text, "#FileName#", fileNameWithoutExtension.Substring(2, fileNameWithoutExtension.Length - 8)); - } - else - { - text = Regex.Replace(text, "#FileName#", fileNameWithoutExtension.Substring(0, fileNameWithoutExtension.Length - 6)); - } - - bool encoderShouldEmitUTF8Identifier = true; - bool throwOnInvalidBytes = false; - UTF8Encoding encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes); - bool append = false; - StreamWriter streamWriter = new StreamWriter(fullPath, append, encoding); - streamWriter.Write(text); - streamWriter.Close(); - AssetDatabase.ImportAsset(pathName); - return AssetDatabase.LoadAssetAtPath(pathName, typeof(UnityEngine.Object)); - } - - internal static void AddConfigInit(string pathName) - { - string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(pathName); - string add1 = string.Format("{0}.Init();taskCount++;", fileNameWithoutExtension); - string add2 = string.Format("completeCount += {0}.inited ? 1 : 0;", fileNameWithoutExtension); - - string path = Application.dataPath + "/Scripts/Utility/ConfigInitiator.cs"; - var text = File.ReadAllText(path); - - if (!text.Contains(add1)) - { - text = text.Replace("//鍒濆鍖栫粨鏉焅r\n", add1 + "\r\n" + "\t\t//鍒濆鍖栫粨鏉焅r\n"); - } - else - { - Debug.Log(fileNameWithoutExtension); - } - - if (!text.Contains(add2)) - { - text = text.Replace("//缁熻閰嶇疆琛ㄨВ鏋愯繘搴r\n", add2 + "\r\n" + "\t\t//缁熻閰嶇疆琛ㄨВ鏋愯繘搴r\n"); - } - - bool encoderShouldEmitUTF8Identifier = true; - bool throwOnInvalidBytes = false; - UTF8Encoding encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes); - bool append = false; - StreamWriter streamWriter = new StreamWriter(path, append, encoding); - streamWriter.Write(text); - streamWriter.Close(); - AssetDatabase.ImportAsset(path); - - } -} - - +锘縰sing System.Collections; +using System.Collections.Generic; +using UnityEditor.ProjectWindowCallback; +using UnityEngine; +using UnityEditor; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System; +using UnityEngine.Events; + +public class CreateConfigClassFile +{ + + const string retract1 = "\t"; + const string retract2 = "\t\t"; + const string retract3 = "\t\t\t"; + const string retract4 = "\t\t\t\t"; + const string retract5 = "\t\t\t\t\t"; + + public static event UnityAction FileCreateEvent; + + public static string filedContent = string.Empty; + public static string readContent = string.Empty; + + + [UnityEditor.MenuItem("Assets/鐢熸垚閰嶇疆瑙f瀽绫诲瀷")] + public static void GenerateConfigClass() + { + + if (Selection.objects != null) + { + foreach (var o in Selection.objects) + { + var path = AssetDatabase.GetAssetPath(o.GetInstanceID()); + if (path.EndsWith(".txt") || path.EndsWith(".TXT")) + { + CreateConfigClass(new FileInfo(path)); + } + } + + AssetDatabase.Refresh(); + } + } + + public static void CreateConfigClass(FileInfo fileInfo, bool isIL = false) + { + var lines = File.ReadAllLines(fileInfo.FullName); + if (lines.Length > 2) + { + var typeLine = lines[0]; + var fieldLine = lines[1]; + var types = typeLine.Split('\t'); + var fields = fieldLine.Split('\t'); + var min = Mathf.Min(types.Length, fields.Length); + var fieldFulls = new List<string>(); + var readFulls = new List<string>(); + + int index = 0; + for (int j = 0; j < min; j++) + { + var type = types[j]; + var field = fields[j]; + var fieldstring = GetField(type, field); + var readString = GetRead(type, field, index); + if (!string.IsNullOrEmpty(fieldstring)) + { + fieldFulls.Add(fieldstring); + } + + if (!string.IsNullOrEmpty(readString)) + { + index++; + readFulls.Add(readString); + } + } + + filedContent = string.Join("\r\n\t", fieldFulls.ToArray()); + readContent = string.Join("\r\n\r\n\t\t\t", readFulls.ToArray()); + CreatNewConfigClass(fileInfo.Name.Substring(0, fileInfo.Name.IndexOf('.')), isIL); + } + + } + + public static string GetField(string type, string field) + { + field = field.Replace(" ", ""); + if (type.Contains("int[][]")) + { + return StringUtility.Contact("public readonly int[][] ", field.Trim(), ";"); + } + else if (type.Contains("int[]")) + { + return StringUtility.Contact("public readonly int[] ", field.Trim(), ";"); + } + else if (type.Contains("Int2[]")) + { + return StringUtility.Contact("public readonly Int2[] ", field.Trim(), ";"); + } + else if (type.Contains("Int3[]")) + { + return StringUtility.Contact("public readonly Int3[] ", field.Trim(), ";"); + } + else if (type.Contains("float[]")) + { + return StringUtility.Contact("public readonly float[] ", field.Trim(), ";"); + } + else if (type.Contains("string[]")) + { + return StringUtility.Contact("public readonly string[] ", field.Trim(), ";"); + } + else if (type.Contains("Vector3[]")) + { + return StringUtility.Contact("public readonly Vector3[] ", field.Trim(), ";"); + } + else if (type.Contains("int")) + { + return StringUtility.Contact("public readonly int ", field.Trim(), ";"); + } + else if (type.Contains("long")) + { + return StringUtility.Contact("public readonly long ", field.Trim(), ";"); + } + else if (type.Contains("float")) + { + return StringUtility.Contact("public readonly float ", field.Trim(), ";"); + } + else if (type.Contains("string")) + { + return StringUtility.Contact("public readonly string ", field, ";"); + } + else if (type.Contains("Vector3")) + { + return StringUtility.Contact("public readonly Vector3 ", field.Trim(), ";"); + } + else if (type.Contains("bool")) + { + return StringUtility.Contact("public readonly bool ", field.Trim(), ";"); + } + else if (type.Contains("Int2")) + { + return StringUtility.Contact("public readonly Int2 ", field.Trim(), ";"); + } + else if (type.Contains("Int3")) + { + return StringUtility.Contact("public readonly Int3 ", field.Trim(), ";"); + } + else + { + return string.Empty; + } + } + + public static string GetRead(string type, string field, int index) + { + field = field.Replace(" ", ""); + if (type.Contains("int[][]")) + { + return StringUtility.Contact(field, " = JsonMapper.ToObject<int[][]>(tables", "[", index, "]", ")", "; "); + } + else if (type.Contains("int[]")) + { + var line0 = StringUtility.Contact("if (tables", "[", index, "].Contains(\"[\"))\n"); + var line0_1 = StringUtility.Contact(retract3, "{\n"); + var line0_2 = StringUtility.Contact(retract4, field, " = JsonMapper.ToObject<int[]>(tables", "[", index, "]);\n"); + var line0_3 = StringUtility.Contact(retract3, "}\n"); + var line0_4 = StringUtility.Contact(retract3, "else\n"); + var line0_5 = StringUtility.Contact(retract3, "{\n"); + var line1 = StringUtility.Contact(retract4, "string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); + var line2 = StringUtility.Contact(retract4, field, " = ", "new int", "[", field, "StringArray.Length]", ";", "\n"); + var line3 = StringUtility.Contact(retract4, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); + var line4 = StringUtility.Contact(retract4, "{\n"); + var line5 = StringUtility.Contact(retract5, " int.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); + var line6 = StringUtility.Contact(retract4, "}\n"); + var line0_6 = StringUtility.Contact(retract3, "}"); + + return StringUtility.Contact(line0, line0_1, line0_2, line0_3, line0_4, line0_5, line1, line2, line3, line4, line5, line6, line0_6); + } + else if (type.Contains("Int2[]")) + { + var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); + var line2 = StringUtility.Contact(retract3, field, " = ", "new Int2", "[", field, "StringArray.Length]", ";", "\n"); + var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); + var line4 = StringUtility.Contact(retract3, "{\n"); + var line5 = StringUtility.Contact(retract4, " Int2.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); + var line6 = StringUtility.Contact(retract3, "}"); + + return StringUtility.Contact(line1, line2, line3, line4, line5, line6); + } + else if (type.Contains("Int3[]")) + { + var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); + var line2 = StringUtility.Contact(retract3, field, " = ", "new Int3", "[", field, "StringArray.Length]", ";", "\n"); + var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); + var line4 = StringUtility.Contact(retract3, "{\n"); + var line5 = StringUtility.Contact(retract4, " Int3.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); + var line6 = StringUtility.Contact(retract3, "}"); + + return StringUtility.Contact(line1, line2, line3, line4, line5, line6); + } + else if (type.Contains("float[]")) + { + var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); + var line2 = StringUtility.Contact(retract3, field, " = ", "new float", "[", field, "StringArray.Length", "]", ";", "\n"); + var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); + var line4 = StringUtility.Contact(retract3, "{\n"); + var line5 = StringUtility.Contact(retract4, " float.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); + var line6 = StringUtility.Contact(retract3, "}"); + + return StringUtility.Contact(line1, line2, line3, line4, line5, line6); + } + else if (type.Contains("string[]")) + { + var line1 = StringUtility.Contact(field, " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);"); + return line1; + } + else if (type.Contains("Vector3[]")) + { + var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); + var line2 = StringUtility.Contact(retract3, field, " = ", "new Vector3", "[", field, "StringArray.Length", "]", ";", "\n"); + var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); + var line4 = StringUtility.Contact(retract3, "{\n"); + var line5 = StringUtility.Contact(retract4, field, "[i]", "=", field, "StringArray", "[i]", ".Vector3Parse()", ";", "\n"); + var line6 = StringUtility.Contact(retract3, "}"); + + return StringUtility.Contact(line1, line2, line3, line4, line5, line6); + } + else if (type.Contains("int")) + { + return StringUtility.Contact("int.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); + } + else if (type.Contains("long")) + { + return StringUtility.Contact("long.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); + } + else if (type.Contains("float")) + { + return StringUtility.Contact("float.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); + } + else if (type.Contains("string")) + { + return StringUtility.Contact(field, " = ", "tables", "[", index, "]", ";"); + } + else if (type.Contains("Vector3")) + { + return StringUtility.Contact(field, "=", "tables", "[", index, "]", ".Vector3Parse()", ";"); + } + else if (type.Contains("bool")) + { + var line1 = StringUtility.Contact("var ", field, "Temp", " = 0", ";", "\n"); + var line2 = StringUtility.Contact(retract3, "int.TryParse(tables", "[", index, "]", ",", "out ", field, "Temp", ")", "; ", "\n"); + var line3 = StringUtility.Contact(retract3, field, "=", field, "Temp", "!=0", ";"); + return StringUtility.Contact(line1, line2, line3); + } + else if (type.Contains("Int2")) + { + return StringUtility.Contact("Int2.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); + } + else if (type.Contains("Int3")) + { + return StringUtility.Contact("Int3.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); + } + else + { + return string.Empty; + } + } + + static string configClassPath = "Assets/Scripts/Core/GameEngine/Model/Config"; + static string configILClassPath = "LogicProject/Src/Config"; + static string templatePath = "Assets/Editor/ScriptTemplate/ConfigDataTemplate.txt"; + + public static void CreatNewConfigClass(string _name, bool isIL) + { + string newConfigPath; + if (isIL) + { + newConfigPath = configILClassPath + string.Format("/IL{0}Config.cs", _name); + } + else + { + newConfigPath = configClassPath + string.Format("/{0}Config.cs", _name); + } + AssetDatabase.DeleteAsset(newConfigPath); + UnityEngine.Object o = CreateScriptAssetFromTemplate(newConfigPath, templatePath, isIL); + ProjectWindowUtil.ShowCreatedAsset(o); + } + + internal static UnityEngine.Object CreateScriptAssetFromTemplate(string pathName, string resourceFile, bool isIL) + { + string fullPath = Path.GetFullPath(pathName); + + StreamReader streamReader = new StreamReader(resourceFile); + string text = streamReader.ReadToEnd(); + streamReader.Close(); + string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(pathName); + text = Regex.Replace(text, "#ClassName*#", fileNameWithoutExtension); + text = Regex.Replace(text, "#DateTime#", System.DateTime.Now.ToLongDateString()); + text = Regex.Replace(text, "#Field#", CreateConfigClassFile.filedContent); + text = Regex.Replace(text, "#Read#", CreateConfigClassFile.readContent); + if (isIL) + { + text = Regex.Replace(text, "#FileName#", fileNameWithoutExtension.Substring(2, fileNameWithoutExtension.Length - 8)); + } + else + { + text = Regex.Replace(text, "#FileName#", fileNameWithoutExtension.Substring(0, fileNameWithoutExtension.Length - 6)); + } + + bool encoderShouldEmitUTF8Identifier = true; + bool throwOnInvalidBytes = false; + UTF8Encoding encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes); + bool append = false; + StreamWriter streamWriter = new StreamWriter(fullPath, append, encoding); + streamWriter.Write(text); + streamWriter.Close(); + AssetDatabase.ImportAsset(pathName); + return AssetDatabase.LoadAssetAtPath(pathName, typeof(UnityEngine.Object)); + } + + internal static void AddConfigInit(string pathName) + { + string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(pathName); + string add1 = string.Format("{0}.Init();taskCount++;", fileNameWithoutExtension); + string add2 = string.Format("completeCount += {0}.inited ? 1 : 0;", fileNameWithoutExtension); + + string path = Application.dataPath + "/Scripts/Utility/ConfigInitiator.cs"; + var text = File.ReadAllText(path); + + if (!text.Contains(add1)) + { + text = text.Replace("//鍒濆鍖栫粨鏉焅r\n", add1 + "\r\n" + "\t\t//鍒濆鍖栫粨鏉焅r\n"); + } + else + { + Debug.Log(fileNameWithoutExtension); + } + + if (!text.Contains(add2)) + { + text = text.Replace("//缁熻閰嶇疆琛ㄨВ鏋愯繘搴r\n", add2 + "\r\n" + "\t\t//缁熻閰嶇疆琛ㄨВ鏋愯繘搴r\n"); + } + + bool encoderShouldEmitUTF8Identifier = true; + bool throwOnInvalidBytes = false; + UTF8Encoding encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes); + bool append = false; + StreamWriter streamWriter = new StreamWriter(path, append, encoding); + streamWriter.Write(text); + streamWriter.Close(); + AssetDatabase.ImportAsset(path); + + } +} + + -- Gitblit v1.8.0