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