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); }
public void SetFileSystem(FileSystem FileSystem, Action Action) { LanguageUtils.LocalSet(ref this.FileSystem, FileSystem, () => { Action(); }); }