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(); }
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); }
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); }
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(); }
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); }