Advertisement
Pro_Unit

Trigger

Oct 3rd, 2022 (edited)
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.50 KB | None | 0 0
  1.     public class Trigger
  2.     {
  3.         private readonly string _name;
  4.  
  5.         public readonly Subject<Trigger> Triggered = new Subject<Trigger>();
  6.  
  7.         public readonly Subject<Trigger> Reseted = new Subject<Trigger>();
  8.         public readonly Subject<Trigger> Seted = new Subject<Trigger>();
  9.  
  10.         private bool _value;
  11.         private readonly bool _debug;
  12.  
  13.         public bool Value
  14.         {
  15.             get
  16.             {
  17.                 if (_value == false)
  18.                     return false;
  19.  
  20.                 Reset();
  21.  
  22.                 Triggered.OnNext(this);
  23.  
  24.                 return true;
  25.             }
  26.         }
  27.  
  28.         public Trigger(string name = "", bool startValue = false, bool debug = false)
  29.         {
  30.             _name = name;
  31.             _value = startValue;
  32.             _debug = debug;
  33.         }
  34.  
  35.         public void Set() =>
  36.             this
  37.                 .When(_debug, _ => this.LogMethod($"{nameof(Set)} \"{_name}\""))
  38.                 .With(_ => _value = true)
  39.                 .With(Seted.OnNext);
  40.  
  41.         public void Reset() =>
  42.             this
  43.                 .When(_debug, x => x.LogMethod($"{nameof(Reset)} \"{_name}\""))
  44.                 .With(_ => _value = false)
  45.                 .With(Reseted.OnNext);
  46.  
  47.         public static implicit operator bool(Trigger trigger) => trigger.Value;
  48.  
  49.         public static implicit operator Func<bool>(Trigger trigger) => () => trigger.Value;
  50.  
  51.         public override string ToString() => $"Trigger \"{_name}\"";
  52.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement