public async Task Export(R4UDeck deck, IExportInfo info) { Log.Information("Serializing: {name}", deck.Name); /* * using (var db = _database()) * { * Log.Information("Replacing all foils with non-foils..."); * foreach (var card in deck.Ratios.Keys) * if (card.IsFoil) deck.ReplaceCard(card, await db.FindNonFoil(card)); * } */ Log.Information("Creating deck.cod..."); var cckDeck = new CockatriceDeck(); cckDeck.DeckName = deck.Name; cckDeck.Comments = deck.Remarks; cckDeck.Ratios = new CockatriceDeckRatio(); cckDeck.Ratios.Ratios = deck.Ratios.Select(Translate).ToList(); var resultDeck = Path.CreateDirectory(info.Destination).Combine($"{deck.Name?.AsFileNameFriendly() ?? "deck"}.cod"); resultDeck.Open(s => _serializer.Serialize(s, cckDeck), System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite ); Log.Information($"Saved: {resultDeck.FullPath}"); await Task.CompletedTask; }
public async Task Export(WeissSchwarzDeck deck, IExportInfo info, CancellationToken cancellationToken = default) { Log.Information("Serializing: {name}", deck.Name); var progress = info.Progress; var report = DeckExportProgressReport.Starting(deck.Name, "Cockatrice"); progress.Report(report); using (var db = _database()) { Log.Information("Replacing all foils with non-foils..."); report = report with { Percentage = 1, ReportMessage = new MultiLanguageString { EN = "Replacing foils with non-foils..." } }; progress.Report(report); foreach (var card in deck.Ratios.Keys) { if (card.IsFoil) { deck.ReplaceCard(card, await db.FindNonFoil(card, cancellationToken)); } } } report = report with { Percentage = 30, ReportMessage = new MultiLanguageString { EN = "Creating Deck for COD format." } }; progress.Report(report); Log.Information("Creating deck.cod..."); var cckDeck = new CockatriceDeck(); cckDeck.DeckName = deck.Name; cckDeck.Comments = deck.Remarks; cckDeck.Ratios = new CockatriceDeckRatio(); cckDeck.Ratios.Ratios = deck.Ratios.Select(Translate).ToList(); report = report with { Percentage = 30, ReportMessage = new MultiLanguageString { EN = "Saving COD file..." } }; progress.Report(report); var deckFilename = deck.Name?.AsFileNameFriendly(); if (String.IsNullOrEmpty(deckFilename)) { deckFilename = "deck"; } var resultDeck = Path.CreateDirectory(info.Destination).Combine($"{deckFilename}.cod"); await resultDeck.WriteAsync(s => _serializer.Serialize(s, cckDeck), cancellationToken); Log.Information($"Saved: {resultDeck.FullPath}"); report = report.Done(resultDeck.FullPath); progress.Report(report); }