Exemplo n.º 1
0
 public void Corrupt(object obj, SPRNG rng, int level, float strength = 0.5f)
 {
     if (obj.GetType() != _field.DeclaringType) return;
     if (level < _rank) return;
     switch (_type)
     {
         case CorruptionType.Boolean:
             _field.SetValue(obj, rng.NextBoolean());
             break;
         case CorruptionType.Int32:
             _field.SetValue(obj, Lerp((int)_field.GetValue(obj), rng.Next(rangeMinI, rangeMaxI - 1), strength));
             break;
         case CorruptionType.Float:
             _field.SetValue(obj, Lerp((float)_field.GetValue(obj), rng.NextSingle(rangeMin, rangeMax), strength));
             break;
         case CorruptionType.Double:
             _field.SetValue(obj, Lerp((double)_field.GetValue(obj), rng.NextDouble(rangeMin, rangeMax), strength));
             break;
         case CorruptionType.Int64:
             _field.SetValue(obj, Lerp((long)_field.GetValue(obj), rng.NextLong(rangeMinI, rangeMaxI), strength));
             break;
     }
 }