Esempio n. 1
0
            public bool IsOverrideableWithDependencies(SerializedFrameSettings serialized, FrameSettings?defaultFrameSettings)
            {
                FrameSettingsFieldAttribute attribute = attributes[field];
                bool locallyOverrideable = overrideable == null || overrideable();

                FrameSettingsField[] dependencies = attribute.dependencies;
                if (dependencies == null || ignoreDependencies || !locallyOverrideable)
                {
                    return(locallyOverrideable);
                }

                if (!defaultFrameSettings.HasValue)
                {
                    return(true);
                }

                bool dependenciesOverrideable = true;

                for (int index = dependencies.Length - 1; index >= 0 && dependenciesOverrideable; --index)
                {
                    FrameSettingsField depency = dependencies[index];
                    dependenciesOverrideable &= EvaluateBoolWithOverride(depency, this, defaultFrameSettings, serialized, attribute.IsNegativeDependency(depency));
                }
                return(dependenciesOverrideable);
            }
        static OverridableFrameSettingsArea()
        {
            attributes      = new Dictionary <FrameSettingsField, FrameSettingsFieldAttribute>();
            attributesGroup = new Dictionary <int, IOrderedEnumerable <KeyValuePair <FrameSettingsField, FrameSettingsFieldAttribute> > >();
            Dictionary <FrameSettingsField, string> frameSettingsEnumNameMap = FrameSettingsFieldAttribute.GetEnumNameMap();
            Type type = typeof(FrameSettingsField);

            foreach (FrameSettingsField enumVal in frameSettingsEnumNameMap.Keys)
            {
                attributes[enumVal] = type.GetField(frameSettingsEnumNameMap[enumVal]).GetCustomAttribute <FrameSettingsFieldAttribute>();
            }

            frameSettingsKeywords = attributes
                                    .Values.Where(v => !string.IsNullOrEmpty(v?.displayedName))
                                    .Select(v => v.displayedName?.ToLowerInvariant()).ToArray();
        }