예제 #1
0
    public bool Load(string path)
    {
        if (!File.Exists(path))
        {
            return(false);
        }

        Clear();

        name = path;
        using (var reader = new BinaryReader(File.OpenRead(path)))
        {
            var count = reader.ReadInt32();
            for (var i = 0; i < count; i++)
            {
                var file = new VFile {
                    id = i
                };
                file.Deserialize(reader);
                AddFile(file);
            }
            _pos = reader.BaseStream.Position;
        }
        Reindex();
        return(true);
    }
예제 #2
0
    public static List <VFile> LoadVersions(string filename, bool update = false)
    {
        string rootDir = Path.GetDirectoryName(filename);
        Dictionary <string, VFile> data = update ? _updateData : _baseData;

        data.Clear();
        using (FileStream stream = File.OpenRead(filename))
        {
            var reader = new BinaryReader(stream);
            var list   = new List <VFile>();
            var ver    = reader.ReadInt32();
            GameLog.Log("LoadVersions:" + ver);
            int count = reader.ReadInt32();
            for (var i = 0; i < count; i++)
            {
                var version = new VFile();
                version.Deserialize(reader);
                list.Add(version);
                data[version.name] = version;
                var dir = string.Format("{0}/{1}", rootDir, Path.GetDirectoryName(version.name));
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
            }
            return(list);
        }
    }