示例#1
0
    public static IAttributeModifier GetModifier(AttributModifierType p_modifierType, GameObject p_owner, BaseAttributeParam p_param)
    {
        IAttributeModifier modifierFactor = null;

        switch (p_modifierType)
        {
        case AttributModifierType.Resource:
            modifierFactor = new ResourceModifier();
            break;

        case AttributModifierType.DurationRatio:
            modifierFactor = new DurationRatioModifier();
            break;

        case AttributModifierType.Duration:
            modifierFactor = new DurationModifier();
            break;

        case AttributModifierType.SingleValue:
            modifierFactor = new SingleValueModifier();
            break;

        default:
            Debug.Log("The type " + p_modifierType.ToString() + " is not implemented.");
            return(null);
        }

        modifierFactor.SetAttributeParam(p_param);
        modifierFactor.OnStart(p_owner);

        return(modifierFactor);
    }
示例#2
0
        public bool Handle(IAttributeModifier modifier, ObjectCardContext context)
        {
            var isObjectModification = context.EditiedObject != null;

            if (context.IsReadOnly)
            {
                return(false);
            }

            if (_tripleNumberTextAttr == null)
            {
                return(false);
            }

            foreach (var item in _tripleNumberTextAttr)
            {
                if (context.AttributesValues.TryGetValue(item.NumberAttr, out var attr))
                {
                    if (attr is decimal n)
                    {
                        var st    = n.ToString(CultureInfo.CurrentCulture);
                        var kop   = string.Empty;
                        var split = st.Split('.');
                        if (split.Length == 2)
                        {
                            kop = split[1];
                        }
                        var split1 = st.Split(',');
                        if (split1.Length == 2)
                        {
                            kop = split1[1];
                        }

                        var t = Math.Truncate(n);
                        var j = decimal.ToInt32(t);

                        var s = RusNumber.Str(j).Trim();

                        if (!string.IsNullOrEmpty(kop))
                        {
                            s = s + " " + kop + " копеек";
                        }

                        var s2 = n.ToString("N");

                        var pos       = s2.LastIndexOf(',');
                        var substring = s2.Substring(0, pos);

                        modifier.SetValue(item.StrAttr, s);
                        modifier.SetValue(item.StrNumberAttr, substring + " рублей " + kop + " копеек");
                    }
                }
            }

            return(true);
        }
示例#3
0
        public ComposedElementModifier(
            IElementSelector elementSelector, 
            IElementAttributeSelector attributeSelector, 
            IAttributeModifier attributeModifier)
        {
            if (elementSelector == null)
            {
                throw new ArgumentNullException("elementSelector");
            }

            if (attributeSelector == null)
            {
                throw new ArgumentNullException("attributeSelector");
            }

            if (attributeModifier == null)
            {
                throw new ArgumentNullException("attributeModifier");
            }

            this.elementSelector = elementSelector;
            this.attributeSelector = attributeSelector;
            this.attributeModifier = attributeModifier;
        }
示例#4
0
        public bool Handle(IAttributeModifier modifier, ObjectCardContext context)
        {
            var isObjectModification = context.EditiedObject != null;

            if (isObjectModification || context.IsReadOnly)
            {
                return(false);
            }
            if (_doc == null)
            {
                return(false);
            }
            var docProp = _doc.GetProps();

            foreach (var pairPilotKompasAttr in _pairPilotKompasAttrs)
            {
                var val = docProp.FirstOrDefault(x => x.Name == pairPilotKompasAttr.NamePropKompas)?.Value;
                if (val != null)
                {
                    modifier.SetValue(pairPilotKompasAttr.NameAttrPilot, ValueTextClear(val));
                }
            }
            return(true);
        }
示例#5
0
 public void AddAbsoluteModifier(IAttributeModifier modifier)
 {
     _absoluteModifiers.Add(modifier);
 }
示例#6
0
 public void AddRelativeModifier(IAttributeModifier modifier)
 {
     _relativeModifiers.Add(modifier);
 }
示例#7
0
 public void AddModifier(IAttributeModifier modifier)
 {
     _modifiers.Add(modifier);
 }
示例#8
0
 public bool OnValueChanged(IAttribute sender, AttributeValueChangedEventArgs args, IAttributeModifier modifier)
 {
     return(false);
 }
 public bool OnValueChanged(IAttribute sender, AttributeValueChangedEventArgs args, IAttributeModifier modifier)
 {
     throw new NotImplementedException();
 }
 public bool Handle(IAttributeModifier modifier, ObjectCardContext context)
 {
     throw new NotImplementedException();
 }