Files
Continentis/Assets/Plugins/UniRx/Scripts/Notifiers/BooleanNotifier.cs
SoulliesOfficial d09b58fd80 架构大更
2026-03-20 11:56:50 -04:00

66 lines
1.5 KiB
C#

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