Example #1
0
 public double SetField(CreatureFields index, double value)
 {
     if (index < 0 || index >= CreatureFields.Count)
     {
         return(0);
     }
     return(_SetField(index, value));
 }
Example #2
0
    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);
    }
Example #3
0
    public double ModifyField(CreatureFields index, double value)
    {
        if (index < 0 || index >= CreatureFields.Count)
        {
            return(0);
        }

        var nv = GetField(index) + value;

        return(_SetField(index, nv));
    }
Example #4
0
 public double GetField(CreatureFields index)
 {
     return(GetField((int)index));
 }