public async Task SaveUpkFile(DomainHeader Header, string Filename) { if (Header == null) return; foreach(DomainExportTableEntry export in Header.ExportTable.Where(export => export.DomainObject == null)) await export.ParseDomainObject(Header, false, false); FileStream stream = new FileStream(Filename, FileMode.Create); int headerSize = Header.GetBuilderSize(); ByteArrayWriter writer = ByteArrayWriter.CreateNew(headerSize); await Header.WriteBuffer(writer, 0); await stream.WriteAsync(writer.GetBytes(), 0, headerSize); foreach(DomainExportTableEntry export in Header.ExportTable) { ByteArrayWriter objectWriter = await export.WriteObjectBuffer(); await stream.WriteAsync(objectWriter.GetBytes(), 0, objectWriter.Index); } await stream.FlushAsync(); stream.Close(); }
private void onFileLoaded(FileLoadedMessage message) { header = message.File.Header; viewModel.ExportTableEntries = new ObservableCollection<ExportTableEntryViewEntity>(mapper.Map<IEnumerable<ExportTableEntryViewEntity>>(message.File.Header.ExportTable)); exportTableEntries.AddRange(message.File.Header.ExportTable); viewModel.ExportTableEntries.ForEach(export => export.PropertyChanged += onExportTableEntryPropertyChanged); }
public async Task<DomainHeader> LoadUpkFile(string Filename) { byte[] data = await Task.Run(() => File.ReadAllBytes(Filename)); ByteArrayReader reader = ByteArrayReader.CreateNew(data, 0); DomainHeader header = new DomainHeader(reader) { FullFilename = Filename, FileSize = data.LongLength }; return header; }
private void onFileLoading(FileLoadingMessage message) { tokenSource?.Cancel(); viewModel.ObjectTree.Traverse(entity => entity.IsExport).ForEach(entity => entity.PropertyChanged -= onObjectTreeViewEntityPropertyChanged); viewModel.ObjectTree.Clear(); header = null; imports = null; exports = null; }
private void onFileLoaded(FileLoadedMessage message) { header = message.File.Header; imports = header.ImportTable.ToList(); exports = header.ExportTable.ToList(); Task.Run(() => buildObjectParents(resetToken())).FireAndForget(); }