Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class FlagChecker
- {
- readonly Dictionary<string, bool> _flags = new Dictionary<string, bool>();
- public void Set(string flag, bool val)
- {
- OnFlagSet(flag, _flags[flag], val);
- _flags[flag] = val;
- }
- void OnFlagSet(string flag, bool old, bool newVal)
- {
- OnFlagChanged(flag,newVal);
- }
- public bool IsTrue(string flag) => _flags[flag];
- public bool IsFalse(string flag) => !_flags[flag];
- public bool this[string flag]
- {
- get => _flags[flag];
- set => SetFalse(flag);
- }
- public void SetTrue(string flag) => Set(flag,true);
- public void SetFalse(string flag) => Set(flag, false);
- public event Action<string, bool> FlagChanged;
- public event Action<string> FlagTrue;
- public event Action<string> FlagFalse;
- protected virtual void OnFlagChanged(string flag, bool val)
- {
- FlagChanged?.Invoke(flag, val);
- if (val) OnFlagTrue(flag);
- else OnFlagFalse(flag);
- }
- protected virtual void OnFlagTrue(string obj) => FlagTrue?.Invoke(obj);
- protected virtual void OnFlagFalse(string obj) => FlagFalse?.Invoke(obj);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement