public async Task readFile(BarEntry file) { // Firstly, is the file parameter null? PreviewDdt = null; Preview = null; PreviewImage = null; if (file == null) { return; } if (file.Extension == ".WAV" || file.Extension == ".MP3") { using FileStream input = File.OpenRead(barFilePath); // Locate the file within the BAR file. input.Seek(file.Offset, SeekOrigin.Begin); var data = new byte[file.FileSize2]; await input.ReadAsync(data, 0, data.Length); if (file.isCompressed == 2) { audio = new MemoryStream(await soundUtils.DecryptSound(data)); } else { audio = new MemoryStream(data); } return; } if (file.Extension == ".DDT") { using FileStream input = File.OpenRead(barFilePath); // Locate the file within the BAR file. input.Seek(file.Offset, SeekOrigin.Begin); var data = new byte[file.FileSize2]; await input.ReadAsync(data, 0, data.Length); if (Alz4Utils.IsAlz4File(data)) { data = await Alz4Utils.ExtractAlz4BytesAsync(data); } else { if (L33TZipUtils.IsL33TZipFile(data)) { data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data); } } PreviewDdt = new DdtFile(data, true); return; } if (file.Extension == ".BMP" || file.Extension == ".TGA" || file.Extension == ".PNG" || file.Extension == ".CUR" || file.Extension == ".JPG") { using FileStream input = File.OpenRead(barFilePath); // Locate the file within the BAR file. input.Seek(file.Offset, SeekOrigin.Begin); var data = new byte[file.FileSize2]; await input.ReadAsync(data, 0, data.Length); if (Alz4Utils.IsAlz4File(data)) { data = await Alz4Utils.ExtractAlz4BytesAsync(data); } else { if (L33TZipUtils.IsL33TZipFile(data)) { data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data); } } var bitmap = new BitmapImage(); using (var stream = new MemoryStream(data)) { if (file.Extension == ".TGA") { IImage image = await Task.Run(() => Pfim.Pfim.FromStream(stream)); var pinnedArray = GCHandle.Alloc(image.Data, GCHandleType.Pinned); var addr = pinnedArray.AddrOfPinnedObject(); var bsource = BitmapSource.Create(image.Width, image.Height, 96.0, 96.0, PixelFormat(image), null, addr, image.DataLen, image.Stride); PngBitmapEncoder encoder = new PngBitmapEncoder(); MemoryStream memoryStream = new MemoryStream(); encoder.Frames.Add(BitmapFrame.Create(bsource)); encoder.Save(memoryStream); memoryStream.Position = 0; bitmap.BeginInit(); bitmap.StreamSource = memoryStream; bitmap.CacheOption = BitmapCacheOption.OnLoad; bitmap.EndInit(); bitmap.Freeze(); memoryStream.Close(); } /*else if (file.Extension == ".PNG") * { * System.Drawing.Image image = System.Drawing.Image.FromStream(stream); * using var memory = new MemoryStream(); * image.Save(memory, System.Drawing.Imaging.ImageFormat.Bmp); * memory.Seek(0, SeekOrigin.Begin); * bitmap.BeginInit(); * bitmap.CacheOption = BitmapCacheOption.OnLoad; * bitmap.StreamSource = memory; * bitmap.EndInit(); * }*/ else { bitmap.BeginInit(); bitmap.StreamSource = stream; bitmap.CacheOption = BitmapCacheOption.OnLoad; bitmap.EndInit(); bitmap.Freeze(); } } PreviewImage = bitmap; return; } if (file.Extension == ".XMB") { using FileStream input = File.OpenRead(barFilePath); // Locate the file within the BAR file. input.Seek(file.Offset, SeekOrigin.Begin); var data = new byte[file.FileSize2]; await input.ReadAsync(data, 0, data.Length); if (Alz4Utils.IsAlz4File(data)) { data = await Alz4Utils.ExtractAlz4BytesAsync(data); } else { if (L33TZipUtils.IsL33TZipFile(data)) { data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data); } } //File.WriteAllBytes(file.fileNameWithoutPath, data); Preview = new Document(); Preview.SyntaxHighlighting = "XML"; Preview.Text = await XMBFile.XmbToXmlAsync(data); NotifyPropertyChanged("Preview"); return; } if (file.Extension == ".XAML" || file.Extension == ".XML" || file.Extension == ".SHP" || file.Extension == ".LGT" || file.Extension == ".XS" || file.Extension == ".TXT" || file.Extension == ".CFG" || file.Extension == ".PY" || file.Extension == ".TACTICS") { using FileStream input = File.OpenRead(barFilePath); // Locate the file within the BAR file. input.Seek(file.Offset, SeekOrigin.Begin); var data = new byte[file.FileSize2]; await input.ReadAsync(data, 0, data.Length); if (Alz4Utils.IsAlz4File(data)) { data = await Alz4Utils.ExtractAlz4BytesAsync(data); } else { if (L33TZipUtils.IsL33TZipFile(data)) { data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data); } } Preview = new Document(); Preview.Text = System.Text.Encoding.UTF8.GetString(data); if (file.Extension == ".XS") { Preview.SyntaxHighlighting = "C++"; } else { Preview.SyntaxHighlighting = "XML"; } NotifyPropertyChanged("Preview"); return; } return; }
public async Task readFile(BarEntry file) { // Firstly, is the file parameter null? PreviewDdt = null; Preview = null; PreviewImage = null; if (file == null) { return; } if (file.Extension == ".WAV" /* || file.Extension == ".MP3"*/) { using FileStream input = File.OpenRead(barFilePath); // Locate the file within the BAR file. input.Seek(file.Offset, SeekOrigin.Begin); var data = new byte[file.FileSize2]; await input.ReadAsync(data, 0, data.Length); //File.WriteAllBytes(file.fileNameWithoutPath, data); audio = new MemoryStream(data); if (file.isCompressed) { // AudioFileReader audioFileReader = new AudioFileReader(); // DirectSoundOut directSoundOut = new DirectSoundOut(); // audioFileReader. audio = new MemoryStream(data); } else { audio = new MemoryStream(data); } return; } if (file.Extension == ".DDT") { using FileStream input = File.OpenRead(barFilePath); // Locate the file within the BAR file. input.Seek(file.Offset, SeekOrigin.Begin); var data = new byte[file.FileSize2]; await input.ReadAsync(data, 0, data.Length); if (Alz4Utils.IsAlz4File(data)) { data = await Alz4Utils.ExtractAlz4BytesAsync(data); } else { if (L33TZipUtils.IsL33TZipFile(data)) { data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data); } } PreviewDdt = new DdtFile(data, true); return; } if (file.Extension == ".BMP" || file.Extension == ".PNG" || file.Extension == ".CUR" || file.Extension == ".JPG") { using FileStream input = File.OpenRead(barFilePath); // Locate the file within the BAR file. input.Seek(file.Offset, SeekOrigin.Begin); var data = new byte[file.FileSize2]; await input.ReadAsync(data, 0, data.Length); if (Alz4Utils.IsAlz4File(data)) { data = await Alz4Utils.ExtractAlz4BytesAsync(data); } else { if (L33TZipUtils.IsL33TZipFile(data)) { data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data); } } var bitmap = new BitmapImage(); using (var stream = new MemoryStream(data)) { bitmap.BeginInit(); bitmap.StreamSource = stream; bitmap.CacheOption = BitmapCacheOption.OnLoad; bitmap.EndInit(); bitmap.Freeze(); } PreviewImage = bitmap; return; } if (file.Extension == ".XMB") { using FileStream input = File.OpenRead(barFilePath); // Locate the file within the BAR file. input.Seek(file.Offset, SeekOrigin.Begin); var data = new byte[file.FileSize2]; await input.ReadAsync(data, 0, data.Length); if (Alz4Utils.IsAlz4File(data)) { data = await Alz4Utils.ExtractAlz4BytesAsync(data); } else { if (L33TZipUtils.IsL33TZipFile(data)) { data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data); } } //File.WriteAllBytes(file.fileNameWithoutPath, data); Preview = new Document(); Preview.SyntaxHighlighting = "XML"; Preview.Text = await XMBFile.XmbToXmlAsync(data); NotifyPropertyChanged("Preview"); return; } if (file.Extension == ".XAML" || file.Extension == ".XML" || file.Extension == ".SHP" || file.Extension == ".LGT" || file.Extension == ".XS" || file.Extension == ".TXT" || file.Extension == ".CFG" || file.Extension == ".PY") { using FileStream input = File.OpenRead(barFilePath); // Locate the file within the BAR file. input.Seek(file.Offset, SeekOrigin.Begin); var data = new byte[file.FileSize2]; await input.ReadAsync(data, 0, data.Length); if (Alz4Utils.IsAlz4File(data)) { data = await Alz4Utils.ExtractAlz4BytesAsync(data); } else { if (L33TZipUtils.IsL33TZipFile(data)) { data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data); } } Preview = new Document(); Preview.Text = System.Text.Encoding.UTF8.GetString(data); if (file.Extension == ".XS") { Preview.SyntaxHighlighting = "C++"; } else { Preview.SyntaxHighlighting = "XML"; } NotifyPropertyChanged("Preview"); return; } return; }
public async void GetCustomValues(string filename) { if (!File.Exists(filename)) { throw new Exception("BAR file does not exist!"); } using var file = File.OpenRead(filename); var reader = new BinaryReader(file); reader.BaseStream.Seek(entry.Offset, SeekOrigin.Begin); byte[] data = reader.ReadBytes(entry.FileSize2); await Task.Run(() => { entry.CRC32 = Crc32Algorithm.Compute(data); }); reader.BaseStream.Seek(entry.Offset, SeekOrigin.Begin); HeaderText = new string(reader.ReadChars(4)); reader.BaseStream.Seek(entry.Offset, SeekOrigin.Begin); Header = reader.ReadInt32(); if (entry.Extension == ".DDT") { if (Alz4Utils.IsAlz4File(data)) { data = await Alz4Utils.ExtractAlz4BytesAsync(data); } else { if (L33TZipUtils.IsL33TZipFile(data)) { data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data); } } PreviewDdt = new DdtFile(data, true); var flagList = new List <string>(); if (PreviewDdt.Usage.HasFlag(DdtFileTypeUsage.AlphaTest)) { flagList.Add(DdtFileTypeUsage.AlphaTest.ToString()); } if (PreviewDdt.Usage.HasFlag(DdtFileTypeUsage.LowDetail)) { flagList.Add(DdtFileTypeUsage.LowDetail.ToString()); } if (PreviewDdt.Usage.HasFlag(DdtFileTypeUsage.Bump)) { flagList.Add(DdtFileTypeUsage.Bump.ToString()); } if (PreviewDdt.Usage.HasFlag(DdtFileTypeUsage.Cube)) { flagList.Add(DdtFileTypeUsage.Cube.ToString()); } if (flagList.Count > 0) { DdtUsage = ((byte)PreviewDdt.Usage).ToString() + " (" + string.Join('+', flagList) + ")"; } else { DdtUsage = ((byte)PreviewDdt.Usage).ToString(); } DdtAlpha = ((byte)PreviewDdt.Alpha).ToString() + " (" + PreviewDdt.Alpha.ToString() + ")"; DdtFormat = ((byte)PreviewDdt.Format).ToString() + " (" + PreviewDdt.Format.ToString() + ")"; gpDDT.Visibility = Visibility.Visible; } }