using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 属性实例
///
public class AttributeInstance {
/// 属性名称
public string name;
/// 基础值
public float baseValue;
/// 当前值
public float currentValue;
/// 附加值%
public float additionValue;
/// 最小值
public float minValue;
/// 最大值
public float maxValue = float.MaxValue;
/// 属性类型
public AttributeType type;
/// 修改器列表
public List modifiers = new List();
/// 添加修改器
public void AddModifier(AttributeModifier mod, bool isUpdate) {
modifiers.Add(mod);
if (isUpdate) { RecalculateValue(); }
}
/// 添加修改器
public void AddModifier(List mods, bool isUpdate) {
modifiers.AddRange(mods);
if (isUpdate) { RecalculateValue(); }
}
/// 重新计算值
public void RecalculateValue() {
currentValue = baseValue;
modifiers.ForEach(mod => currentValue = mod.Fixed(currentValue));
additionValue = 1;
modifiers.ForEach(mod => additionValue = mod.Addition(additionValue));
currentValue = currentValue * additionValue;
currentValue = Mathf.Clamp(currentValue, minValue, maxValue);
}
}