feature(feedbacks): adds public property AlwaysSendValue and new constructor to Bool, Int, and String Feedbacks that will always perform a FireUpdate event even when value is the same.

This commit is contained in:
Jason Alborough
2021-07-25 11:52:10 -04:00
parent 10f5516a5a
commit e3f5d74e7e
3 changed files with 23 additions and 4 deletions

View File

@@ -18,6 +18,7 @@ namespace PepperDash.Essentials.Core
/// </summary> /// </summary>
public override bool BoolValue { get { return _BoolValue; } } public override bool BoolValue { get { return _BoolValue; } }
bool _BoolValue; bool _BoolValue;
public bool AlwaysSendValue;
/// <summary> /// <summary>
/// Fake value to be used in test mode /// Fake value to be used in test mode
@@ -62,10 +63,16 @@ namespace PepperDash.Essentials.Core
ValueFunc = valueFunc; ValueFunc = valueFunc;
} }
public BoolFeedback(string key, bool alwaysSendValue, Func<bool> valueFunc)
: this(key, valueFunc)
{
AlwaysSendValue = alwaysSendValue;
}
public override void FireUpdate() public override void FireUpdate()
{ {
bool newValue = InTestMode ? TestValue : ValueFunc.Invoke(); bool newValue = InTestMode ? TestValue : ValueFunc.Invoke();
if (newValue != _BoolValue) if (newValue != _BoolValue || AlwaysSendValue)
{ {
_BoolValue = newValue; _BoolValue = newValue;
LinkedInputSigs.ForEach(s => UpdateSig(s)); LinkedInputSigs.ForEach(s => UpdateSig(s));

View File

@@ -12,6 +12,7 @@ namespace PepperDash.Essentials.Core
public override int IntValue { get { return _IntValue; } } // ValueFunc.Invoke(); } } public override int IntValue { get { return _IntValue; } } // ValueFunc.Invoke(); } }
int _IntValue; int _IntValue;
public ushort UShortValue { get { return (ushort)_IntValue; } } public ushort UShortValue { get { return (ushort)_IntValue; } }
public bool AlwaysSendValue;
//public override eCueType Type { get { return eCueType.Int; } } //public override eCueType Type { get { return eCueType.Int; } }
@@ -51,10 +52,16 @@ namespace PepperDash.Essentials.Core
ValueFunc = valueFunc; ValueFunc = valueFunc;
} }
public IntFeedback(string key, bool alwaysSendValue, Func<int> valueFunc)
: this(key, valueFunc)
{
AlwaysSendValue = alwaysSendValue;
}
public override void FireUpdate() public override void FireUpdate()
{ {
var newValue = InTestMode ? TestValue : ValueFunc.Invoke(); var newValue = InTestMode ? TestValue : ValueFunc.Invoke();
if (newValue != _IntValue) if (newValue != _IntValue || AlwaysSendValue)
{ {
_IntValue = newValue; _IntValue = newValue;
LinkedInputSigs.ForEach(s => UpdateSig(s)); LinkedInputSigs.ForEach(s => UpdateSig(s));

View File

@@ -23,6 +23,7 @@ namespace PepperDash.Essentials.Core
/// </summary> /// </summary>
public Func<string> ValueFunc { get; private set; } public Func<string> ValueFunc { get; private set; }
List<StringInputSig> LinkedInputSigs = new List<StringInputSig>(); List<StringInputSig> LinkedInputSigs = new List<StringInputSig>();
public bool AlwaysSendValue;
/// <summary> /// <summary>
/// Creates the feedback with the Func as described. /// Creates the feedback with the Func as described.
@@ -51,13 +52,17 @@ namespace PepperDash.Essentials.Core
{ {
ValueFunc = valueFunc; ValueFunc = valueFunc;
} }
public StringFeedback(string key, bool alwaysSendValue, Func<string> valueFunc)
: this(key, valueFunc)
{
AlwaysSendValue = alwaysSendValue;
}
public override void FireUpdate() public override void FireUpdate()
{ {
var newValue = InTestMode ? TestValue : ValueFunc.Invoke(); var newValue = InTestMode ? TestValue : ValueFunc.Invoke();
if (newValue != _StringValue) if (newValue != _StringValue || AlwaysSendValue)
{ {
_StringValue = newValue; _StringValue = newValue;
LinkedInputSigs.ForEach(s => UpdateSig(s)); LinkedInputSigs.ForEach(s => UpdateSig(s));