Beispiel #1
0
        public ImageFile(string fileName, string rootPath, string setCode = null, string artist = null, bool isArt = false)
        {
            var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);

            if (fileNameWithoutExtension == null)
            {
                throw new ArgumentException(@"fileName is null", nameof(fileName));
            }

            string directoryName = Path.GetDirectoryName(fileName);

            if (directoryName == null)
            {
                throw new ArgumentException(@"directoryName is null", nameof(fileName));
            }

            FullPath = fileName;

            string[] parts        = fileNameWithoutExtension.Split(Array.From('.'), StringSplitOptions.None);
            var      lastNamePart = Enumerable.Range(0, parts.Length)
                                    .Last(i =>
                                          i == 0 ||
                                          // Richard Garfield, Ph.D..xlhq.jpg
                                          // S.N.O.T..xlhq.jpg
                                          // Our Market Research....xlhq.jpg
                                          parts[i].Length <= 1 ||
                                          // Sarpadian Empires, Vol. VII.xlhq.jpg
                                          // Но Thoughtseize.[Size 16x20].jpg
                                          !(parts[i].StartsWith("[") && parts[i].EndsWith("]")) && parts[i].Contains(' '));

            Type = string.Join(".", parts.Skip(1 + lastNamePart));

            var imageName = string.Join(".", parts.Take(1 + lastNamePart))
                            .Replace(" - ", string.Empty);

            ImageName = string.Intern(ImageNamePatcher.PatchFileName(imageName));

            var nameParts = ImageName.SplitTalingNumber();

            Name          = string.Intern(nameParts.Item1);
            VariantNumber = nameParts.Item2;

            rootPath = rootPath.ToAppRootedPath();

            if (!rootPath.EndsWith("\\"))
            {
                rootPath = rootPath + "\\";
            }

            if (!directoryName.EndsWith("\\"))
            {
                directoryName = directoryName + "\\";
            }

            if (setCode != null)
            {
                SetCode = string.Intern(setCode);
                SetCodeIsFromAttribute = true;
            }
            else
            {
                var setCodeMatch = _setCodeRegex.Match(directoryName.Substring(rootPath.Length));
                if (setCodeMatch.Success)
                {
                    SetCode = string.Intern(setCodeMatch.Value.ToUpperInvariant());
                }
                else
                {
                    SetCode = string.Empty;
                }
            }

            Quality = getQuality();

            if (artist != null)
            {
                Artist = string.Intern(artist);
            }

            IsArt   = isArt;
            IsToken = directoryName.IndexOf("Tokens", Str.Comparison) >= 0;
        }
Beispiel #2
0
        private void preProcessCard(Card card)
        {
            card.NameNormalized = string.Intern(card.NameEn.RemoveDiacritics());

            ImageNamePatcher.Patch(card);

            if (_patch.Cards.TryGetValue(card.SetCode, out var patch))
            {
                card.PatchCard(patch);
            }

            if (_patch.Cards.TryGetValue(card.NameEn, out patch))
            {
                card.PatchCard(patch);
            }

            if (_patch.Cards.TryGetValue(card.Id, out patch))
            {
                card.PatchCard(patch);
            }

            if (card.SubtypesArr != null)
            {
                card.Subtypes = string.Intern(string.Join(" ", card.SubtypesArr));
            }
            else
            {
                card.Subtypes = string.Empty;
            }

            if (card.TypesArr != null)
            {
                card.Types = string.Intern(string.Join(" ", card.TypesArr));
            }
            else
            {
                card.Types = string.Empty;
            }

            if (card.SupertypesArr != null)
            {
                card.Supertypes = string.Intern(string.Join(" ", card.SupertypesArr));
            }
            else
            {
                card.Supertypes = string.Empty;
            }

            card.PowerNum     = getPower(card.Power);
            card.ToughnessNum = getPower(card.Toughness);
            card.LoyaltyNum   = getLoyalty(card.Loyalty);

            card.TextEn   = card.TextEn?.Invoke(LocalizationRepository.IncompleteChaosPattern.Replace, "{CHAOS}");
            card.FlavorEn = card.FlavorEn?.Invoke(LocalizationRepository.IncompleteChaosPattern.Replace, "{CHAOS}");

            if (card.MciNumber == null)
            {
                card.MciNumber = card.Number;
            }
            else if (card.MciNumber.EndsWith(".html"))
            {
                card.MciNumber = _mciNumberRegex.Match(card.MciNumber).Groups["id"].Value;
            }

            card.Color = card.ColorsArr != null && card.ColorsArr.Count > 0
                                ? string.Join(" ", card.ColorsArr)
                                : "Colorless";

            if (!string.IsNullOrEmpty(card.OriginalText) && Str.Equals(card.OriginalText, card.TextEn))
            {
                card.OriginalText = null;
            }

            if (!string.IsNullOrEmpty(card.OriginalType) && Str.Equals(card.OriginalType, card.TypeEn))
            {
                card.OriginalType = null;
            }

            if (Str.Equals(card.SetCode, "BBD"))
            {
                if (card.Number.EndsWith("b", Str.Comparison))
                {
                    card.Remove = true;
                }
                else if (card.Number.EndsWith("a", Str.Comparison))
                {
                    card.Number = card.Number.Substring(0, card.Number.Length - 1);
                    card.Names  = null;

                    if (Str.Equals(card.ImageName, "will kenrith4"))
                    {
                        card.ImageName = "will kenrith2";
                    }
                    else if (Str.Equals(card.ImageName, "rowan kenrith2"))
                    {
                        card.ImageName = "rowan kenrith1";
                    }
                    else if (Str.Equals(card.ImageName, "rowan kenrith1"))
                    {
                        card.ImageName = "rowan kenrith2";
                    }

                    if (Str.Equals(card.Layout, "flip"))
                    {
                        card.Layout = "normal";
                    }
                }
            }
        }