示例#1
0
        public bool WriteToFile(ArchiveObj.List serializeObjList, string yirdName, Archive.Header header, SaveRecordObj saveRecordObj)
        {
            try
            {
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }

                mIndexFile          = new ArchiveIndexFile();
                mIndexFile.yirdName = yirdName;
                mIndexFile.header   = header;

                bool             bOldIdxFileLoaded = false;
                ArchiveIndexFile oldIndexFile      = null;
                Profiler.BeginSample("Archive");
                serializeObjList.Foreach((serializeObj) =>
                {
                    bool bWrite = true;
                    if (saveRecordObj != null)
                    {
                        bWrite = saveRecordObj(serializeObj);
                    }

                    if (bWrite)
                    {
                        WriteRecord(mIndexFile, serializeObj);
                    }
                    else
                    {
                        if (!bOldIdxFileLoaded)
                        {
                            oldIndexFile      = ArchiveIndexFile.LoadFromFile(dir, yirdName);
                            bOldIdxFileLoaded = true;
                        }
                        CopyIndex(mIndexFile, oldIndexFile, serializeObj);
                    }
                });
                Profiler.EndSample();

                mIndexFile.Write(dir);
            }
            catch (Exception ex)
            {
                Debug.LogWarning(ex);
                return(false);
            }

            return(true);
        }
示例#2
0
        public bool LoadFromFile()
        {
            try
            {
                if (!Directory.Exists(dir))
                {
                    return(false);
                }

                mIndexFile = ArchiveIndexFile.LoadFromFile(dir);
                return(mIndexFile != null);
            }
            catch (Exception ex)
            {
                Debug.LogWarning(ex);
                return(false);
            }
        }