示例#1
0
        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>();
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
            }
        }