Пример #1
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);
            }
        }
        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;
        }
Пример #3
0
        private void LoadCardImages(LocalCard card)
        {
            if (card.Image != null)
            {
                return;
            }

            card.FrontThumbnail = ShellFile.FromFilePath(card.FilePath).Thumbnail.BitmapSource;

            card.Image = ImageUtils.LoadLocalImage(new Uri(card.FilePath, UriKind.Absolute));

            var cardBackPath = Path.GetDirectoryName(card.FilePath) + "\\" + Path.GetFileNameWithoutExtension(card.FilePath) + "-back" + Path.GetExtension(card.FilePath);

            if (File.Exists(cardBackPath))
            {
                card.BackThumbnail = ShellFile.FromFilePath(cardBackPath).Thumbnail.BitmapSource;
                card.HasBack       = true;
            }
        }
Пример #4
0
        private void ConvertToLocal(DateTimeOffset updatedAt, ScryCard[] cards)
        {
            if (localData == null)
            {
                localData = new LocalDataInfo();
            }

            localData.UpdatedAt = updatedAt;
            localData.CardCount = cards.LongLength;

            foreach (var card in cards)
            {
                var lcard = card.Layout != CardLayout.Token
                    ? localData.Cards.FirstOrDefault(c => c.OracleId == card.OracleId)
                    : localData.Cards.FirstOrDefault(c => c.Name == card.Name);
                if (lcard == null)
                {
                    lcard = new LocalCard
                    {
                        OracleId    = card.OracleId,
                        Name        = card.Name,
                        ScryUrl     = card.ScryUrl,
                        LatestPrint = card.ReleasedAt,
                        Parts       = card.Parts
                    };
                    localData.Cards.Add(lcard);
                }
                else
                {
                    if (card.ReleasedAt > lcard.LatestPrint)
                    {
                        lcard.LatestPrint = card.ReleasedAt;
                    }

                    if (card.Parts != null)
                    {
                        if (lcard.Parts == null)
                        {
                            lcard.Parts = new List <CardParts>();
                        }

                        lcard.Parts.AddRange(card.Parts.Where(part => lcard.Parts.All(p => part.Id != p.Id)));
                    }
                }

                var       iu    = card.ImageUrls;
                ImageUrls child = null;
                if (card.Layout == CardLayout.Transform)
                {
                    iu    = card.CardFaces.First().ImageUrls;
                    child = card.CardFaces.Last().ImageUrls;
                }

                if (lcard.Prints.All(p => p.Id != card.Id))
                {
                    lcard.Prints.Add(new CardPrints
                    {
                        Id        = card.Id,
                        Set       = card.Set,
                        SetName   = card.SetName,
                        ImageUrls = iu,
                        ChildUrls = child
                    });
                }
            }
        }