public override void AddFile(string file) { CheckDisposed(); if (string.IsNullOrEmpty(file)) { throw new ArgumentException(file); } var resolved = ResolvePath(file); BaseReadOnlyDirectoryNode parent = this; for (int i = 0; i < resolved.Split(Path.DirectorySeparatorChar).Count(x => x == ".."); i++) { parent = parent.Parent; if (parent == null) { throw new PathOutOfRangeException(file); } } var unify = Common.UnifyPath(Path.Combine(RootPath, file)); if (!Directory.Exists(Path.GetDirectoryName(unify))) { Directory.CreateDirectory(Path.GetDirectoryName(unify)); } if (!File.Exists(unify)) { File.Create(unify).Close(); } }
public bool Identify(StreamInfo file, BaseReadOnlyDirectoryNode fileSystem) { using (var br = new BinaryReader(file.FileData, Encoding.ASCII, LeaveOpen)) { return(br.ReadUInt32() == 0x17171717); } }
public void Load(StreamInfo input, BaseReadOnlyDirectoryNode fileSystem) { using (var br = new BinaryReaderX(input.FileData, Encoding.ASCII, LeaveOpen)) { var header = br.ReadType <Header>(); Layout = (RootLayoutElement)ReadLayout(br, null); } }
public bool Identify(StreamInfo fileInfo, BaseReadOnlyDirectoryNode node) { try { return(new BinaryReaderX(fileInfo.FileData, LeaveOpen).ReadString(4) == "ARC\0"); } catch (Exception) { return(false); } }
public bool Identify(StreamInfo input, BaseReadOnlyDirectoryNode node) { try { using (var br = new BinaryReaderX(input.FileData, true)) return(br.PeekString(4) == "btx\0"); } catch (Exception) { return(false); } }
public void Load(StreamInfo file, BaseReadOnlyDirectoryNode fileSystem) { // Here a format class can get initialized and all opened files passed in var buffer = new byte[5]; file.FileData.Position = 4; file.FileData.Read(buffer, 0, 5); _texts = new List <TextEntry> { new TextEntry { Name = "First entry", OriginalText = Encoding.ASCII.GetString(buffer) } }; }
void ILoadFiles.Load(StreamInfo fileInfo, BaseReadOnlyDirectoryNode node) { _format = new PAC(fileInfo.FileData); // Tie-in MsgAdapter if (fileInfo.FileName.Contains("msg")) { foreach (var afi in _format.Files.Where(afi => afi.FileName.Contains("msg")).Select(afi => afi)) { afi.PluginNames = new string[] { "plugin_yuusha_shisu_msg" } } } ; }
public void Load(StreamInfo input, BaseReadOnlyDirectoryNode fileSystem) { var dataStream = fileSystem.GetFileNode("archive.data").Open(); using (var br = new BinaryReaderX(input.FileData, LeaveOpen)) { var header = br.ReadType <Header>(); var entries = br.ReadMultiple <FileEntry>(header.fileCount); Files = entries.Select(x => new ArchiveFileInfo { FileName = x.name, FileData = new SubStream(dataStream, x.offset, x.size), PluginNames = new[] { "plugin_test_adapters.Archive.TestArchive" } }).ToList(); } }
private void ReplaceFilesInAdapter(IArchiveAdapter parentAdapter, BaseReadOnlyDirectoryNode physicalFs, string root) { // Loop through all directories foreach (var dir in physicalFs.EnumerateDirectories()) { ReplaceFilesInAdapter(parentAdapter, physicalFs.GetDirectoryNode(dir.RelativePath), root); } // Update files of this directory foreach (var file in physicalFs.EnumerateFiles()) { var openedFile = file.Open(); var afi = parentAdapter.Files.FirstOrDefault(x => Common.UnifyPath(x.FileName) == file.RelativePath); if (afi != null) { afi.FileData.Dispose(); afi.FileData = openedFile; afi.State = ArchiveFileState.Replaced; } } }
public bool Identify(StreamInfo input, BaseReadOnlyDirectoryNode fs) { var result = true; try { using (var br = new BinaryReaderX(input.FileData, true)) { var magic = br.ReadString(4); if (magic != "TEX\0" && magic != "\0XET") { result = false; } } } catch (Exception) { result = false; } return(result); }
public void Load(StreamInfo input, BaseReadOnlyDirectoryNode node) { _format = new BTX(input.FileData); if (_format.HasPalette) { var indexEncodingInfo = ImageEncodingInfos.FirstOrDefault(x => x.EncodingIndex == (int)_format.Header.Format); var paletteEncodingInfo = PaletteEncodingInfos.FirstOrDefault(x => x.EncodingIndex == (int)_format.Header.Format); _bitmapInfos = new List <BitmapInfo> { new IndexedBitmapInfo(_format.Texture, indexEncodingInfo, _format.Palette, paletteEncodingInfo) }; } else { _bitmapInfos = new List <BitmapInfo> { new BitmapInfo(_format.Texture, ImageEncodingInfos.First(x => x.EncodingIndex == (int)_format.Header.Format)) } }; }
public void Load(StreamInfo input, BaseReadOnlyDirectoryNode fs) { _format = new TEX(input.FileData); // TODO: Implement support for properly populating the FormatInfo for MTTEX. _bitmapInfos = _format.Bitmaps; }
public OpenTabEventArgs(ArchiveFileInfo afi, KoreFileInfo kfi, BaseReadOnlyDirectoryNode fs) { Afi = afi; Kfi = kfi; FileSystem = fs; }
/*public bool Identify(StreamInfo input) * { * try * { * using (var br = new BinaryReaderX(input.FileData, true)) * { * var magic = br.ReadString(4); * var fileSize = br.ReadInt32(); * return magic == "TEXT" && fileSize == br.BaseStream.Length; * } * } * catch (Exception) * { * return false; * } * }*/ public void Load(StreamInfo input, BaseReadOnlyDirectoryNode node) { _format = new TALK(input.FileData); }
public bool Identify(StreamInfo file, BaseReadOnlyDirectoryNode fileSystem) { using (var br = new BinaryReaderX(file.FileData, LeaveOpen)) return(br.ReadString(8) == "ARC TEST"); }
public PathMismatchException(BaseReadOnlyDirectoryNode dirNode, ArchiveFileInfo afi) : base($"{nameof(ArchiveFileInfo)} doesn't match with the directory node \"{dirNode.RelativePath}\".") { DirectoryNode = dirNode; Afi = afi; }