public void AddValue(NpcAttrIndex Index, float Value, bool NotifyEvent = true) { var OldValue = CalcFinalValue(Index); Value_[(int)Index] += Value; TrySendAttrChangeEvent(Index, OldValue, NotifyEvent); }
/// <summary> /// 百分比乘法叠加 /// </summary> public void ApplyPercent(NpcAttrIndex Index, float Percent, bool NotifyEvent = true) { var OldValue = CalcFinalValue(Index); Percent_[(int)Index] *= Percent; TrySendAttrChangeEvent(Index, OldValue, NotifyEvent); }
public NpcAttrChangedEvent(BaseNpc Master, NpcAttrIndex Index, float OldValue, float NewValue) : base(Master) { this.Index = Index; this.OldValue = OldValue; this.NewValue = NewValue; this.ChangeValue = NewValue - OldValue; }
public void ResetModify(NpcAttrIndex Index, bool NotifyEvent = true) { var OldValue = CalcFinalValue(Index); Percent_[(int)Index] = 1; Base_[(int)Index] = 0; TrySendAttrChangeEvent(Index, OldValue, NotifyEvent); }
public override float OnAddAttr(NpcAttrIndex Index, float Value) { if (Index != NpcAttrIndex.Hp || Value >= 0) { return(Value); } var Level = Master_.Skill.GetSkillLevel(SkillID_); return(Mathf.Clamp(Value + 10 * Level, Value, 0)); }
public override float OnAddAttr(NpcAttrIndex Index, float Value) { if (Index != NpcAttrIndex.Hp || Value >= 0) { return(Value); } var Level = Master_.Skill.GetSkillLevel(SkillID_); return(Value * (1 - (0.4f + 0.1f * Level))); }
public float AddAttr(NpcAttrIndex Index, float Value) { var RealValue = Value; foreach (var Handler in HandlerList_) { RealValue = Handler.OnAddAttr(Index, RealValue); } Data.AddAttr(Index, RealValue); return(Value); }
private void TrySendAttrChangeEvent(NpcAttrIndex Index, float OldValue, bool NotifyEvent) { if (!NotifyEvent) { return; } var NewValue = CalcFinalValue(Index); if (UnityEngine.Mathf.Approximately(OldValue, NewValue)) { return; } EventManager.Send(new NpcAttrChangedEvent(Master_, Index, OldValue, NewValue)); }
public float CalcFinalAttr(NpcAttrIndex Index) { return(Data.CalcFinalAttr(Index)); }
public void AddAttr(NpcAttrIndex Index, float Value, bool Notify = true) { Attr.AddValue(Index, Value, Notify); }
public float CalcFinalAttr(NpcAttrIndex Index) { return(Attr.CalcFinalValue(Index)); }
public float CalcFinalValue(NpcAttrIndex Index) { return((GetValue(Index) + GetBase(Index)) * GetPercent(Index)); }
public NpcAttrModifyInfo(NpcAttrIndex Index, float Percent, float Base) { this.Index = Index; this.Percent = Percent; this.Base = Base; }
public float GetBase(NpcAttrIndex Index) { return(Base_[(int)Index]); }
public float GetPercent(NpcAttrIndex Index) { return(Percent_[(int)Index]); }
public float GetValue(NpcAttrIndex Index) { return(Value_[(int)Index]); }
public virtual float OnAddAttr(NpcAttrIndex Index, float Value) { return(Value); }