package attribute func NewAttributeNumeric(pData float32) *AttributeNumeric { attribute := &AttributeNumeric{ BaseValue: NewFixedNumeric(pData), ProValue: NewFixedNumeric(pData), AppendValue: NewFixedNumeric(pData), BuffProValue: NewFixedNumeric(pData), BuffValue: NewFixedNumeric(pData), } attribute.SetBase(pData) return attribute } type AttributeNumeric struct { fixedValue FixedPoint /// /// 基础数值 /// BaseValue FixedNumeric /// /// 附加数值 /// AppendValue FixedNumeric /// /// 附加百分比数值 /// ProValue FixedNumeric /// /// Buff附加数值 /// BuffValue FixedNumeric /// /// Buff附加百分比数值 /// BuffProValue FixedNumeric } func (this *AttributeNumeric) Fixed() FixedPoint { return this.fixedValue } func (this *AttributeNumeric) Value() float32 { return this.fixedValue.Scalar() } func (this *AttributeNumeric) SetBase(value float32) float32 { this.BaseValue.SetFloat(value) this.onChange() return this.BaseValue.Value() } func (this *AttributeNumeric) onChange() { // this.fixedValue = (this.BaseValue.Fixed()*(1+this.ProValue.Fixed())+this.AppendValue.Fixed())*(1+this.BuffProValue.Fixed()) + this.BuffValue.Fixed() }