private static void WriteSplitFile <T>() where T : ITable, ILuaFile <T> { T luaFile = default; string mainFileHeadText = luaFile.GetLuaFileHeadStart(); ILuaSplitFile <T> luaSplitFile = (ILuaSplitFile <T>)luaFile; string folderPath = luaSplitFile.GetFolderPath(); string mainFileName = luaSplitFile.GetMainFileName(); string requirePath = luaSplitFile.GetChildFileRequirePath(); string fileNameFormat = luaSplitFile.GetChildFileNameFormat(); WriteSplitFile <T>(folderPath, mainFileName, mainFileHeadText, requirePath, fileNameFormat); if (Tool.IsImplementInterface(typeof(T), typeof(ILuaMultipleSplitFile <,>))) { WriteMultipleSplitFile <T>(); } }
private static void WriteSplitFile <T>(string folderPath, string mainFileName, string mainFileHeadText, string requirePath, string fileNameFormat) where T : ITable, ILuaFile <T> { T luaFile = default; ILuaSplitFile <T> luaSplitFile = (ILuaSplitFile <T>)luaFile; List <T> list = luaFile.GetModel(); string fileExtension = luaSplitFile.GetFileExtension(); m_mainFileTextBuilder.Clear(); for (ushort index = 0; index < list.Count; index++) { T childFileData = list[index]; string fileName = string.Format(fileNameFormat, childFileData.GetKey()); string path = requirePath + fileName; string requireText = string.Format(LuaFormat.RequireFunction, path); m_mainFileTextBuilder.Append(requireText); string filePath = Tool.CombineFilePath(folderPath, fileName, fileExtension); Write(filePath, childFileData.GetWriteFileString()); } string mainFilePath = Tool.CombineFilePath(folderPath, mainFileName, fileExtension); string mainFileText = m_mainFileTextBuilder.ToString(); WriteWithHeadText(mainFilePath, mainFileHeadText, mainFileText); }
private static void ReadSplitFile <T>(bool hasNoKeyTable) where T : ITable { T luaTable = default; ILuaFile <T> luaFile = (ILuaFile <T>)luaTable; ILuaSplitFile <T> luaSplitFile = (ILuaSplitFile <T>)luaTable; string[] arrayFullPath = Directory.GetFiles(luaSplitFile.GetFolderPath()); if (arrayFullPath == null || arrayFullPath.Length == 0) { return; } List <T> list = luaFile.GetModel(); string mainFileName = luaSplitFile.GetMainFileName(); string childFileHeadStart = luaSplitFile.GetChildFileHeadStart(); bool isCheckMainFile = false; for (int fileIndex = 0; fileIndex < arrayFullPath.Length; fileIndex++) { string fullPath = arrayFullPath[fileIndex]; if (!isCheckMainFile && fullPath.Contains(mainFileName)) { isCheckMainFile = true; continue; } if (fullPath.EndsWith(Config.MetaExtension)) { continue; } string luaText = File.ReadAllText(fullPath); if (hasNoKeyTable) { WriteArrayKeyToFileString(ref luaText); } T table = ReadLuaSplitFileTable <T>(luaText, childFileHeadStart); list.Add(table); } }