public StfsArchive(Stream stream) { Stfs = new StfsFile(stream); Root = new DirectoryNode(); Dictionary <int, DirectoryNode> Directories = new Dictionary <int, DirectoryNode>(); Directories.Add(0xFFFF, Root); for (int i = 0; i < Stfs.Files.Count; i++) { StfsFile.FileDescriptor file = Stfs.Files[i]; DirectoryNode parent = Directories[file.Parent]; if ((file.Flags & 0x80) != 0) { DirectoryNode directory = new DirectoryNode(file.Name); parent.AddChild(directory); Directories.Add(i, directory); } else { parent.AddChild(new FileNode(file.Name, file.Size, new Substream(Stfs.Stream, Stfs.Stream.GetBlockOffset(file.Block), file.Size))); } } }
public BlockStream(StfsFile stfs, Stream stream) { Base = stream; Stfs = stfs; Position = 0; }
public StfsArchive() { Stfs = new StfsFile(); Root = new DirectoryNode(); }