public void ChangeLevelUsingChangeCurve(Entity entity, float curveInput, MinMaxFloatAT otherAT, float multiplier, bool increaseLevel) { ChangeCurve changeCurve = FindChangeCurve(otherAT); if (changeCurve == null) { Debug.LogError(entity.name + ": Trying to change an Attribute (" + name + ") Level with " + otherAT.name + " but it does not exist in the Change Curves Mappings. Please Fix."); return; } float rate = changeCurve.changeMinMaxCurve.NormAndEval(curveInput, otherAT.GetMin(entity), otherAT.GetMax(entity)); float changeAmount = multiplier * rate; if (!increaseLevel) { changeAmount = -changeAmount; } SetData(entity, new MinMaxFloatData() { floatValue = changeAmount + entitiesData[entity].floatValue }); //Debug.Log(entity.name + ": Burned " + changeAmount + " Energy from " + rate + " burn rate for " + multiplier); }
public float GetMin() { float level = 0f; MinMaxFloatAT minMaxFloatAT = attributeType as MinMaxFloatAT; if (minMaxFloatAT != null) { level = minMaxFloatAT.GetMin(entity); if (entity.inventoryType.usesItemAttributeTypeModifiers) { level = entity.inventoryType.GetAlwaysItemAttributeTypeModifiers(entity, attributeType, level, ItemAttributeTypeModifier.ChangeType.Min); } } return(level); }
private ChangeCurve FindChangeCurve(MinMaxFloatAT otherAT) { return(changeCurves.Find(x => x.minMaxFloatAT == otherAT)); }