Esempio n. 1
0
        void ParseWeaponFilterElement(XElement weaponFilterElement, ref WeaponCategoryFlags?flags, ref WeaponCategoryMatchType matchType)
        {
            //Optionally get match type
            XAttribute matchTypeAttribute = weaponFilterElement.Attribute("matchType");

            if (matchTypeAttribute != null)
            {
                if (!Enum.TryParse <WeaponCategoryMatchType>(matchTypeAttribute.Value, out matchType))
                {
                    _errorCollection.AddAttributeValueInvalidValue(weaponFilterElement, matchTypeAttribute);
                }
            }

            //Iterate through all elements.
            IEnumerable <XElement> elements = weaponFilterElement.Elements();

            foreach (XElement element in elements)
            {
                if (element.Name.LocalName != "Category")
                {
                    _errorCollection.AddInvalidElement(element);
                    continue;
                }

                //Get name
                XAttribute nameAttribute = element.Attribute("name");
                if (nameAttribute != null)
                {
                    WeaponCategoryFlags weaponCategoryFlag;
                    if (Enum.TryParse <WeaponCategoryFlags>(nameAttribute.Value, out weaponCategoryFlag))
                    {
                        if (!flags.HasValue)
                        {
                            flags = weaponCategoryFlag;
                        }
                        else
                        {
                            flags |= weaponCategoryFlag;
                        }
                    }
                    else
                    {
                        _errorCollection.AddAttributeValueInvalidValue(element, nameAttribute);
                    }
                }
                else
                {
                    _errorCollection.AddAttributeNotFound("name", element);
                }
            }
        }
Esempio n. 2
0
        public static bool HasWeaponCategoryFlags(WeaponTypes weaponType, WeaponCategoryFlags flags, WeaponCategoryMatchType matchType = WeaponCategoryMatchType.Any)
        {
            WeaponCategoryFlags weaponFlags = WeaponCategoryFlagsArray[(int)weaponType];

            switch (matchType)
            {
            case WeaponCategoryMatchType.Any:
                return((weaponFlags & flags) != 0);

            case WeaponCategoryMatchType.All:
                return((weaponFlags & flags) == flags);

            case WeaponCategoryMatchType.Exact:
                return((weaponFlags & ~flags) == 0);
            }

            return(false);
        }