public double SetField(CreatureFields index, double value) { if (index < 0 || index >= CreatureFields.Count) { return(0); } return(_SetField(index, value)); }
protected double _SetField(CreatureFields index, double value) { var negative = false; var idx = (int)index; var oldVal = m_fields[idx]; switch (index) { case CreatureFields.MaxHealth: maxHealth = (int)value; return(maxHealth - oldVal); case CreatureFields.Health: health = (int)value; return(health - oldVal); case CreatureFields.MaxRage: maxRage = value; return(maxRage - oldVal); case CreatureFields.Rage: rage = value; return(rage - oldVal); case CreatureFields.AttackSpeed: speedAttack = value; return(speedAttack - oldVal); case CreatureFields.MoveSpeed: speedRun = value; return(speedRun - oldVal); case CreatureFields.ColliderHeight: colliderHeight = value; return(colliderHeight - oldVal); case CreatureFields.ColliderOffset: colliderOffset = value; return(colliderOffset - oldVal); case CreatureFields.ColliderSize: colliderSize = value; return(colliderSize - oldVal); case CreatureFields.HitColliderOffset: hitColliderOffset = value; return(hitColliderOffset - oldVal); case CreatureFields.HitColliderSize: hitColliderSize = value; return(hitColliderSize - oldVal); case CreatureFields.RegenRageMul: case CreatureFields.RegenHealthMul: case CreatureFields.AttackRageMul: case CreatureFields.AttackedRageMul: case CreatureFields.DamageIncrease: case CreatureFields.DamageReduce: negative = true; break; default: break; } if (negative && value < 0) { value = 0; } if (oldVal == value) { return(0); } m_fields[idx] = value; DispatchEvent(CreatureEvents.FIELD_CHANGED, Event_.Pop(index, oldVal, value)); return(value - oldVal); }
public double ModifyField(CreatureFields index, double value) { if (index < 0 || index >= CreatureFields.Count) { return(0); } var nv = GetField(index) + value; return(_SetField(index, nv)); }
public double GetField(CreatureFields index) { return(GetField((int)index)); }