示例#1
0
    public static void Calc(PropertyIntParam info, E_DataUpdateType type, int param)
    {
        switch (type)
        {
        case E_DataUpdateType.plus:
        {
            info.SetPlus(param);
        }
        break;

        case E_DataUpdateType.multiply_plus:
        {
            info.SetMultiplyPlus(param);
        }
        break;

        case E_DataUpdateType.zero:
        {
            //cur = 0;
            LogManager.Error("原来还没有做呀");
        }
        break;

        default:
            LogManager.Error("Buff Data update E_DataUpdateType Error. type:{0}", type);
            break;
        }
    }
示例#2
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="origin">原始数据</param>
    /// <param name="cur">结果</param>
    /// <param name="type">更新类型</param>
    /// <param name="param">针对百分比是100值</param>
    public static void Calc(float origin, ref float cur, E_DataUpdateType type, int param)
    {
        //这里有个bug,先把cur zero,然后再加乘一些original,则cur不为0,例如带着冰冻的buff,但是装备上加速度,角色还能跑。
        //这是因为缺乏优先级运算的先后顺序导致的
        //目前先不考虑这些东西吧。等后续慢慢上来
        switch (type)
        {
        case E_DataUpdateType.plus:
        {
            cur += param;
        }
        break;

        case E_DataUpdateType.multiply_plus:
        {
            cur += (origin * param) / PER;
        }
        break;

        case E_DataUpdateType.zero:
        {
            cur = 0;
        }
        break;

        default:
            LogManager.Error("Buff Data update E_DataUpdateType Error. type:{0}", type);
            break;
        }
    }
示例#3
0
        public void ParseParam(TextNode text_node)
        {
            string data_update_string = text_node.GetAttribute(EffectTemplateInfo.DATAUPDATETYPE);
            string value_string       = text_node.GetAttribute(EffectTemplateInfo.VALUE);

            data_type = (E_DataUpdateType)Enum.Parse(typeof(E_DataUpdateType), data_update_string);
            value     = int.Parse(value_string);
        }
示例#4
0
        public override void ExcuteEffect(EventSetData data)
        {
            // 参数
            EventSetEffectData attributeData = data as EventSetEffectData;

            EffectLog.Assert(attributeData != null, "属性变更 参数类型不对[{0}]", data);
            if (attributeData == null)
            {
                return;
            }

            // 属性和数值
            EntityAttributeProperty attPro = attributeData._entity.AttributeProp;

            // 1.更新的属性类型
            E_EntityAttributeType attributeType  = _attParam.entity_attribute_type;
            AttributeIntParam     attributeParam = attPro.FindAttribute(attributeType);
            float oldValue = attributeParam.Value;

            float newValue = 0;
            int   length   = _attParam.values.Count;

            for (int i = 0; i < length; i++)
            {
                float tmpValue = attributeParam.Value;
                // 2.更新的数据的类型(百分比、固定数值)
                E_DataUpdateType dataUpdateType = _attParam.values[i].data_type;
                // 3.数值
                float dataValue = _attParam.values[i].value;

                // 4.计算
                ValueHelper.Calc(attributeParam, dataUpdateType, (int)dataValue);

                newValue += (attributeParam.Value - tmpValue);
            }

            _cumulativeData += newValue;
            EffectLog.Log("执行计算--->属性:[{0}],before:[{1}],after:[{2}],change:[{3}]", attributeType, oldValue, attributeParam.Value, newValue);
        }
示例#5
0
        public static void Calc(AttributeIntParam info, E_DataUpdateType type, int value)
        {
            switch (type)
            {
            case E_DataUpdateType.plus:
                info.SetPlus(value);
                break;

            case E_DataUpdateType.multiply_plus:
                info.SetMultiplyPlus(value);
                break;

            case E_DataUpdateType.zero:
                //cur = 0;
                LogManager.Error("原来还没有做呀");
                break;

            default:
                LogManager.Error("Buff Data update E_DataUpdateType Error. type:{0}", type);
                break;
            }
        }