Example #1
0
        public void Access(string Path, Action Action, int RecompressVersion = -1)
        {
            if (Path.Contains('/'))
            {
                var Parts = Path.Split(new[] { '/' }, 2);
                Access(Parts[0], () =>
                {
                    Access(Parts[1], Action);
                });
                return;
            }

            GetFile(Path, (CompressedStream) =>
            {
                DecompressAndRecompressIfRequired(CompressedStream, (UncompressedStream) =>
                {
                    var Magic = UncompressedStream.Slice().ReadBytesUpTo(0x100);
                    if (FPS4.IsValid(Magic))
                    {
                        LanguageUtils.LocalSet(ref this.FileSystem, new FPS4FileSystem(UncompressedStream), Action);
                    }
                    else if (TO8SCEL.IsValid(Magic))
                    {
                        LanguageUtils.LocalSet(ref this.FileSystem, new TO8SCELFileSystem(UncompressedStream), Action);
                    }
                    else
                    {
                        throw (new InvalidOperationException(String.Format("Can't access '{0}'", Path)));
                    }
                }, RecompressVersion);
            }, RecompressVersion);
        }
Example #2
0
 public void SetFileSystem(FileSystem FileSystem, Action Action)
 {
     LanguageUtils.LocalSet(ref this.FileSystem, FileSystem, () =>
     {
         Action();
     });
 }