コード例 #1
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);
        }
コード例 #2
0
        public ForgeIntegration(
            ImageRepository imageRepo,
            CardRepository cardRepo,
            ForgeIntegrationConfig config,
            ForgeSetRepository forgeSetRepository,
            ImageLoader imageLoader)
        {
            _imageRepo          = imageRepo;
            _cardRepo           = cardRepo;
            _forgeSetRepository = forgeSetRepository;
            _imageLoader        = imageLoader;

            CardPicsPath       = Environment.ExpandEnvironmentVariables(config.CardPicsPath);
            CardPicsBackupPath = Environment.ExpandEnvironmentVariables(config.CardPicsBackupPath);

            _verbose = config.Verbose == true;
        }
コード例 #3
0
        public DeckSerializationSubsystem(
            CardRepository cardRepository,
            ForgeSetRepository forgeSetRepo)
        {
            MtgArenaFormatter = new MtgArenaFormatter(cardRepository);
            MtgoFormatter     = new MtgoDeckFormatter(cardRepository);

            _formatters = new[]
            {
                new JsonDeckFormatter(),
                new TcgCsvDeckFormatter(cardRepository),
                new ForgeDeckFormatter(cardRepository, forgeSetRepo),
                new MagarenaDeckFormatter(cardRepository),
                new DeckedBuilderDeckFormatter(cardRepository),
                new XMageDeckFormatter(cardRepository),
                MtgArenaFormatter,
                // must be after MtgArenaFormatter for correct format resolution
                MtgoFormatter
            };

            _loadFormatters = _formatters.Where(_ => _.SupportsImport && _.SupportsFile).ToArray();
            _saveFormatters = _formatters.Where(_ => _.SupportsExport && _.SupportsFile).ToArray();

            ImportedFilePatterns = _loadFormatters
                                   .Where(_ => _.SupportsImport)
                                   .Select(f => f.FileNamePattern)
                                   .Distinct()
                                   .ToList();

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

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

            AppDir.Save.CreateDirectory();
        }
コード例 #4
0
        public FormMain(
            UndoConfig undoConfig,
            CardRepository cardRepo,
            ImageRepository imageRepo,
            ImageCacheConfig imageCacheConfig,
            ImageLoader imageLoader,
            CollectionEditorModel collectionEditor,
            CardSearcher cardSearcher,
            CardDocumentAdapter cardAdapter,
            DeckDocumentAdapter deckAdapter,
            KeywordSearcher keywordSearcher,
            ForgeSetRepository forgeSetRepo,
            DeckListModel deckListModel,
            DeckSearcher deckSearcher,
            IconRecognizer iconRecognizer,
            FormManager formManager)
            : this()
        {
            DoubleBuffered = true;
            KeyPreview     = true;

            _viewCards = new MtgLayoutView(_layoutViewCards);
            _viewDeck  = new MtgLayoutView(_layoutViewDeck);

            _cardSearcher        = cardSearcher;
            _keywordSearcher     = keywordSearcher;
            _quickFilterControls = QuickFilterSetup.GetQuickFilterControls(this);

            _cardRepo         = cardRepo;
            _imageLoader      = imageLoader;
            _collectionEditor = collectionEditor;
            _serialization    = new DeckSerializationSubsystem(_cardRepo, forgeSetRepo);

            beginRestoreSettings();

            _fields = new Fields();

            QuickFilterSetup.SetQuickFilterProperties(this);
            QuickFilterImages.SetImages(this);

            _quickFilterFacade = new QuickFilterFacade(
                KeywordDefinitions.Patterns,
                KeywordDefinitions.Values.ToKeywordDisplayTexts(),
                KeywordDefinitions.PropertyNames,
                KeywordDefinitions.PropertyNamesDisplay,
                keywordSearcher);

            _buttons = new ButtonSubsystem();

            _cardSearch = new CardSearchSubsystem(
                this,
                _searchEditor,
                _panelIconSearch,
                _listBoxSuggest,
                cardSearcher,
                cardAdapter,
                _viewCards,
                _viewDeck);

            _panelSearchExamples.Setup(_cardSearch, _buttons, _buttonSearchExamplesDropDown);

            _sort = new SortSubsystem(_viewCards, _cardRepo, _fields, _cardSearch);

            endRestoreSettings();

            _tooltipViewCards = new LayoutViewTooltip(this, _viewCards, _cardSearch);
            _tooltipViewDeck  = new LayoutViewTooltip(this, _viewDeck, _cardSearch);

            var formZoomCard = new FormZoom(_cardRepo, imageRepo, _imageLoader);

            _scroll = new ScrollSubsystem(_viewDeck, _viewCards);

            _imagePreloading = new ImagePreloadingSubsystem(
                _viewCards,
                _viewDeck,
                _scroll,
                imageCacheConfig);

            _deckEditor = new DeckEditorModel();

            _dragging = new DraggingSubsystem(
                _viewDeck,
                _viewCards,
                _deckEditor,
                this,
                _imageLoader,
                formManager);

            _deckEditorUi = new DeckEditorUi(
                _viewCards,
                _viewDeck,
                _deckEditor,
                _collectionEditor,
                _dragging,
                Cursor,
                formZoomCard);

            _viewDeck.SetDataSource(_deckEditor.DataSource);
            _viewCards.SetDataSource(_searchResultCards);

            _legality = new LegalitySubsystem(
                _menuLegalityFormat,
                _buttonLegalityAllowLegal,
                _buttonLegalityAllowRestricted,
                _buttonLegalityAllowBanned);

            _drawing = new DrawingSubsystem(
                _viewCards,
                _viewDeck,
                _dragging,
                _cardSearch,
                cardAdapter,
                _deckEditor,
                _quickFilterFacade,
                _legality,
                _imageLoader,
                iconRecognizer);


            _printing = new PrintingSubsystem(imageRepo, _cardRepo);

            DeckZone = Zone.Main;

            scale();
            setRightPanelsWidth();

            _keywordsIndexUpToDate     = _keywordSearcher.IsUpToDate;
            _luceneSearchIndexUpToDate = _cardSearcher.IsUpToDate;
            _spellcheckerIndexUpToDate = _cardSearcher.Spellchecker.IsUpToDate;

            _searchTextSelection = new RichTextBoxSelectionSubsystem(_searchEditor);

            _history = new HistorySubsystem(undoConfig);

            _evaluators = new Evaluators
            {
                { 2, _legality.IsAllowedInFormat },
                { 3, evalFilterByCollection },
                { 4, evalFilterByDeck },
                { 0, _quickFilterFacade.Evaluate },
                { 1, evalFilterBySearchText }
            };

            _deckListControl.Init(
                deckListModel,
                iconRecognizer,
                deckSearcher,
                deckAdapter,
                this);

            _copyPaste = new CopyPasteSubsystem(
                _cardRepo,
                _serialization,
                _collectionEditor,
                _deckEditor,
                _formRoot,
                this,
                _layoutViewDeck,
                _tabHeadersDeck,
                _layoutViewCards,
                _deckListControl.DeckListView);

            setupCheckButtonImages();

            updateExcludeManaAbility();
            updateExcludeManaCost();
            updateShowProhibited();
            updateShowSampleHandButtons();
            updateDeckVisibility();

            subscribeToEvents();
        }
コード例 #5
0
 public ForgeDeckFormatter(CardRepository cardRepo, ForgeSetRepository forgeSetRepo)
 {
     _cardRepo     = cardRepo;
     _forgeSetRepo = forgeSetRepo;
 }
コード例 #6
0
 public ForgeDeckFormatter(CardRepository repo, ForgeSetRepository forgeSetRepo)
     : base(repo)
 {
     _forgeSetRepo = forgeSetRepo;
 }