コード例 #1
0
        private LocalPack LoadPack(string directory)
        {
            var pack = new LocalPack(directory);

            var manifestPath = directory + "\\Manifest.json";

            if (File.Exists(manifestPath))
            {
                try {
                    _logger.LogMessage($"Loading pack manifest {manifestPath}.");
                    var manifest = JsonConvert.DeserializeObject <LocalPackManifest>(File.ReadAllText(manifestPath));
                    ReadManifest(manifest, pack);

                    pack.PropertyChanged += (s, e) => {
                        if (e.PropertyName == nameof(LocalPack.SelectedCard) || e.PropertyName == nameof(LocalPack.IsCardSelected))
                        {
                            return;
                        }

                        WriteManifest();
                    };
                } catch (Exception e) {
                    _logger.LogException(e, "Error loading pack manifest");
                }
            }

            return(pack);
        }
コード例 #2
0
        private LocalCard LoadCard(LocalPack pack, string filePath)
        {
            if (string.Equals(Path.GetExtension(filePath), ".json", StringComparison.InvariantCulture))
            {
                return(null);
            }

            //the backs of cards will be loaded with the front- adding -back to a file denotes it's the back of a card
            if (Path.GetFileNameWithoutExtension(filePath).ToLower().EndsWith("-back"))
            {
                return(null);
            }

            try {
                var card = pack.Cards.FirstOrDefault(x => string.Equals(x.FilePath, filePath, StringComparison.InvariantCulture));
                if (card == null)
                {
                    card = new LocalCard {
                        FilePath = filePath
                    };
                    card.PropertyChanged += (s, e) => {
                        WriteManifest();
                    };
                    pack.Cards.Add(card);
                }

                LoadCardImages(card);

                return(card);
            } catch {
                //this isn't an image- that's completely valid, we just ignore it and move on
                return(null);
            }
        }
コード例 #3
0
        internal void ReadManifest(LocalPackManifest manifest, LocalPack pack)
        {
            pack.Name = manifest.Name;
            var localCards = new ObservableCollection <LocalCard>();

            foreach (var card in manifest.Cards)
            {
                if (File.Exists(card.FilePath))
                {
                    var localCard = new LocalCard(card.FilePath)
                    {
                        CardType = card.CardType,
                        Name     = card.Name,
                        HasBack  = card.HasBack
                    };

                    localCard.PropertyChanged += (s, e) => {
                        WriteManifest();
                    };

                    localCards.Add(localCard);
                }
            }
            pack.Cards = localCards;
        }