Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Trigger
- {
- private readonly string _name;
- public readonly Subject<Trigger> Triggered = new Subject<Trigger>();
- public readonly Subject<Trigger> Reseted = new Subject<Trigger>();
- public readonly Subject<Trigger> Seted = new Subject<Trigger>();
- private bool _value;
- private readonly bool _debug;
- public bool Value
- {
- get
- {
- if (_value == false)
- return false;
- Reset();
- Triggered.OnNext(this);
- return true;
- }
- }
- public Trigger(string name = "", bool startValue = false, bool debug = false)
- {
- _name = name;
- _value = startValue;
- _debug = debug;
- }
- public void Set() =>
- this
- .When(_debug, _ => this.LogMethod($"{nameof(Set)} \"{_name}\""))
- .With(_ => _value = true)
- .With(Seted.OnNext);
- public void Reset() =>
- this
- .When(_debug, x => x.LogMethod($"{nameof(Reset)} \"{_name}\""))
- .With(_ => _value = false)
- .With(Reseted.OnNext);
- public static implicit operator bool(Trigger trigger) => trigger.Value;
- public static implicit operator Func<bool>(Trigger trigger) => () => trigger.Value;
- public override string ToString() => $"Trigger \"{_name}\"";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement