Beispiel #1
0
        public static List<SizePair> MatchSize(object sizeStd, string size, SizeUsePlace place)
        {
            var stdAtt = GetSizeStandartAttributeFromStd(sizeStd);
            var stds = new List<Type>();
            stds.Add(sizeStd.GetType());
            if(place == SizeUsePlace.Сlothes && stdAtt.Sex != ClothesSex.Universal)
            {
                var type = GetСlothesTypeFromStd(sizeStd);
                var unisex = GetStandartsForСlothes(type).FirstOrDefault(x => x.Sex == ClothesSex.Universal);
                if (unisex != null)
                    stds.Add(unisex.StandartsEnumType);
            }

            var result = new List<SizePair> ();

            foreach(var sizeType in stds)
            {
                var lookupArray = GetSizeLookup (sizeType);
                if (lookupArray == null)
                    continue;

                int original = (int)sizeStd;
                foreach(var lookup in lookupArray)
                {
                    if (lookup.Use == SizeUse.СlothesOnly && place == SizeUsePlace.Human)
                        continue;
                    if (lookup.Use == SizeUse.HumanOnly && place == SizeUsePlace.Сlothes)
                        continue;

                    if(lookup.Appropriated.Any(x => x[original] == size))
                    {
                        foreach (var std in Enum.GetValues(sizeType))
                        {
                            var newPiar = new SizePair (GetSizeStdCode (std), lookup.Names[(int)std]);

                            if (newPiar.Size == null)
                                continue;

                            if (!result.Any (pair => pair.StandardCode == newPiar.StandardCode && pair.Size == newPiar.Size))
                                result.Add (newPiar);
                        }
                    }
                }
            }
            return result;
        }
Beispiel #2
0
 public static List<SizePair> MatchSize(SizePair sizePair, SizeUsePlace place)
 {
     return MatchSize (sizePair.StandardCode, sizePair.Size, place);
 }