Exemple #1
0
        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;
        }
Exemple #2
0
    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);
    }