/// <summary> /// Opens the selected resource /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Open(object sender, EventArgs e) { if (FileList.SelectedIndex == -1) { return; } OContainer.FileEntry file = container.GetList()[FileList.SelectedIndex]; byte[] data = Read(file); Stream stream = new MemoryStream(data); OpenSubResource(this, new OpenSubResourceArgs(file.name, stream)); }
private void BtnExport_Click(object sender, EventArgs e) { if (FileList.SelectedIndex == -1) { return; } using (SaveFileDialog saveDlg = new SaveFileDialog()) { var list = container.GetList(); saveDlg.Title = "Export file"; saveDlg.FileName = list[FileList.SelectedIndex].name; saveDlg.Filter = "All files|*.*"; if (saveDlg.ShowDialog() == DialogResult.OK) { OContainer.FileEntry file = list[FileList.SelectedIndex]; File.WriteAllBytes(saveDlg.FileName, Read(file)); } } }
private byte[] Read(OContainer.FileEntry file) { byte[] buffer; if (file.loadFromDisk) { buffer = new byte[file.fileLength]; container.data.Seek(file.fileOffset, SeekOrigin.Begin); container.data.Read(buffer, 0, buffer.Length); } else { buffer = file.data; } if (file.doDecompression) { buffer = LZSS_Ninty.decompress(buffer); } return(buffer); }