12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace UniRx
- {
- /// <summary>
- /// Notify boolean flag.
- /// </summary>
- public class BooleanNotifier : IObservable<bool>
- {
- readonly Subject<bool> boolTrigger = new Subject<bool>();
- bool boolValue;
- /// <summary>Current flag value</summary>
- public bool Value
- {
- get { return boolValue; }
- set
- {
- boolValue = value;
- boolTrigger.OnNext(value);
- }
- }
- /// <summary>
- /// Setup initial flag.
- /// </summary>
- public BooleanNotifier(bool initialValue = false)
- {
- this.Value = initialValue;
- }
- /// <summary>
- /// Set and raise true if current value isn't true.
- /// </summary>
- public void TurnOn()
- {
- if (Value != true)
- {
- Value = true;
- }
- }
- /// <summary>
- /// Set and raise false if current value isn't false.
- /// </summary>
- public void TurnOff()
- {
- if (Value != false)
- {
- Value = false;
- }
- }
- /// <summary>
- /// Set and raise reverse value.
- /// </summary>
- public void SwitchValue()
- {
- Value = !Value;
- }
- /// <summary>
- /// Subscribe observer.
- /// </summary>
- public IDisposable Subscribe(IObserver<bool> observer)
- {
- return boolTrigger.Subscribe(observer);
- }
- }
- }
|