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