Ejemplo n.º 1
0
        public void CopyDeck(IDeckFormatter formatter)
        {
            Deck deck;

            switch (_targetForm.DeckZone)
            {
            case Zone.Main:
            case null when _targetForm.IsDeckListSelected:
                deck = _deckEditor.Snapshot();
                break;

            case Zone.Side:
                deck = copySideDeck();
                break;

            case Zone.Maybe:
                deck = copyMaybeDeck();
                break;

            case Zone.SampleHand:
                deck = copySampleHand();
                break;

            default:
                return;
            }

            var serialized = _serialization.SaveSerialized(deck, formatter);

            serialized.TryCopyToClipboard();
        }
Ejemplo n.º 2
0
        public DeckSerializationSubsystem(
            CardRepository cardRepository,
            ForgeSetRepository forgeSetRepo)
        {
            _formatters = new IDeckFormatter[]
            {
                new JsonDeckFormatter(),
                new ForgeDeckFormatter(cardRepository, forgeSetRepo),
                new MagarenaDeckFormatter(cardRepository),
                new DeckedBuilderDeckFormatter(cardRepository),
                new XMageDeckFormatter(cardRepository),
                new MtgoDeckFormatter(cardRepository)
            };

            ImportedFilePatterns = _formatters
                                   .Where(_ => _.SupportsImport)
                                   .Select(f => f.FileNamePattern)
                                   .Distinct()
                                   .ToReadOnlyList();

            _loadFilter = string.Join(@"|", Sequence.From($"Any {{type}}|{string.Join(@";", ImportedFilePatterns)}").Concat(
                                          _formatters.Where(_ => _.SupportsImport).Select(f => $"{f.Description}|{f.FileNamePattern}")));

            _saveFilter = string.Join(@"|",
                                      _formatters.Where(_ => _.SupportsExport).Select(f => $"{f.Description}|{f.FileNamePattern}"));

            Directory.CreateDirectory(AppDir.Save);
        }
Ejemplo n.º 3
0
        public string SaveSerialized(Deck deck, bool exact, IDeckFormatter formatter = null, string format = null)
        {
            if (formatter == null && format == null)
            {
                throw new ArgumentException($"either {nameof(format)} or {nameof(formatter)} must be specified");
            }

            formatter ??= _formatters.First(f => Str.Equals(f.FileNamePattern, format) && f.SupportsExport);
            var result = formatter.ExportDeck(deck.Name, deck, exact);

            return(result);
        }
Ejemplo n.º 4
0
        public void CopyCollection(IDeckFormatter formatter)
        {
            var deck = Deck.Create(
                _collection.CountById?.ToDictionary(),
                _collection.CountById?.Keys.OrderBy(_ => _cardRepo.CardsById[_].NameEn).ToList(),
                null,
                null,
                null,
                null);

            var serialized = _serialization.SaveSerialized(deck, formatter);

            serialized.TryCopyToClipboard();
        }
Ejemplo n.º 5
0
        public Deck CopyCards(ICollection <Card> cards, IDeckFormatter formatter)
        {
            var deck = Deck.Create(
                cards.ToDictionary(_ => _.Id, _ => 1),
                cards.Select(_ => _.Id).ToList(),
                null,
                null,
                null,
                null,
                null,
                null);

            var serialized = _serialization.SaveSerialized(deck, exact: true, formatter);

            if (serialized.TryCopyToClipboard())
            {
                return(deck);
            }

            return(null);
        }