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; } }
/// <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; } }
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); }
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); }
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; } }