Example #1
0
 public int ApplySpeedMod(Entity source, SpeedModType type, float timeout)
 {
     var mod = SpeedModifier.GenerateUnique(type, timeout);
     mod.Owner = source;
     if (timeout > 0)
     {
         RevokeAllSpeedMods(source);
     }
     _speedMods.Add(mod);
     RecalculateSpeed();
     return mod.ID;
 }
Example #2
0
 public static SpeedModifier GenerateUnique(SpeedModType type, float timeout)
 {
     var id = 0;
     while (UsedIDs.Contains(id))
     {
         id++;
     }
     UsedIDs.Add(id);
     switch (type)
     {
         case SpeedModType.NoSpeed:
             return new SpeedModifier(Static, id, timeout);
         case SpeedModType.DoubleSpeed:
             return new SpeedModifier(DoubleSpeed, id, timeout);
         case SpeedModType.QuarterSlower:
             return new SpeedModifier(QuarterSlower, id, timeout);
         case SpeedModType.QuarterFaster:
             return new SpeedModifier(QuarterFaster, id, timeout);
         case SpeedModType.HalfSlower:
             return new SpeedModifier(HalfSlower, id, timeout);
         case SpeedModType.HalfFaster:
             return new SpeedModifier(HalfFaster, id, timeout);
         default:
             throw new ArgumentOutOfRangeException("type", type, null);
     }
 }