Files
LowPolyRPG/Assets/Plugins/Nullframes/Intrigues/Scripts/Dialogue Pattern/DialoguePattern.cs
Caleb Sandford deQuincey 715fb68744 Initial commitment
2025-06-25 11:10:11 +01:00

3017 lines
140 KiB
C#

using System.Globalization;
using System.Text.RegularExpressions;
namespace Nullframes.Intrigues.Utils
{
public static class DialoguePattern
{
private const string IfGlobalpattern = @"(?<=!if\[).*?(?=\])";
private const string IfTablepattern = @"(?<=\#if\[).*?(?=\])";
private const string IfConspiratorpattern = @"(?<=\$if\[).*?(?=\])";
private const string IfConspiratorHasPolicypattern = @"(?<=\$if\[HasPolicy).*?(?=\])";
private const string IfTargetHasPolicypattern = @"(?<=\&if\[HasPolicy).*?(?=\])";
private const string IfConspiratorNotHasPolicypattern = @"(?<=\$if\[\!HasPolicy).*?(?=\])";
private const string IfTargetNotHasPolicypattern = @"(?<=\&if\[\!HasPolicy).*?(?=\])";
private const string IfTargetpattern = @"(?<=\&if\[).*?(?=\])";
private const string IfGlobalpatternStr = @"\!if\[(.*?)\]\{\""(.*?)\""\}";
private const string IfTablepatternStr = @"\#if\[(.*?)\]\{\""(.*?)\""\}";
private const string IfConspiratorpatternStr = @"\$if\[(.*?)\]\{\""(.*?)\""\}";
private const string IfTargetpatternStr = @"\&if\[(.*?)\]\{\""(.*?)\""\}";
// private const string Quoter = @"""[^""\\]*(?:\\[\s\S][^""\\]*)*""";
private static string Namepattern => @".*?(?=\W)";
private static string Valuepattern(string key) => $@"(?<={key}).*";
public static string ClearChoicePatterns(this string value)
{
value = Regex.Replace(value, @"\&if\[.*?\]", string.Empty);
value = Regex.Replace(value, @"\$if\[.*?\]", string.Empty);
value = Regex.Replace(value, @"\#if\[.*?\]", string.Empty);
value = Regex.Replace(value, @"\!if\[.*?\]", string.Empty);
return value;
}
public static string ManipulateString(this string value, Scheme scheme)
{
globalMatch:
var matches = Regex.Matches(value, IfGlobalpatternStr);
foreach (Match globalMatch in matches)
{
if (!globalMatch.Success) continue;
string newValue = "NULL";
var square = Regex.Match(globalMatch.Value, @"(?<=\[).*?(?=\])");
var curly = Regex.Match(globalMatch.Value, @"(?<=\{\"").*?(?=\""\})");
if (curly.Success && square.Success)
{
var varName = Regex.Match(square.Value, Namepattern);
#region GREATER-OR-EQUAL
var greater = Regex.Match(square.Value, Valuepattern(">>"));
if (varName.Success && greater.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greater.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value > parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(greater.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value > parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
var greaterOrEqual = Regex.Match(square.Value, Valuepattern(">="));
if (varName.Success && greaterOrEqual.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greaterOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value >= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(greaterOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value >= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
#region EQUAL-NOTEQUAL
var equal = Regex.Match(square.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(equal.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !nFloat.Value.Equals(parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(equal.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = nInt.Value != parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
newValue = nBool.Value != parseValue ? string.Empty : curly.Value;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
}
break;
}
}
}
}
var notEqual = Regex.Match(square.Value, Valuepattern("!="));
if (varName.Success && notEqual.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(notEqual.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = nFloat.Value.Equals(parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(notEqual.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = nInt.Value == parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
newValue = nBool.Value == parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
#region LESSER-OR-EQUAL
var lesser = Regex.Match(square.Value, Valuepattern("<<"));
if (varName.Success && lesser.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesser.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value < parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(lesser.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value < parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
var lesserOrEqual = Regex.Match(square.Value, Valuepattern("<="));
if (varName.Success && lesserOrEqual.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesserOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value <= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(lesserOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value <= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
}
go:
value = value.Remove(globalMatch.Index, globalMatch.Length);
value = value.Insert(globalMatch.Index, newValue);
value = value.Replace(@"\n", "\n");
goto globalMatch;
}
tableMatch:
matches = Regex.Matches(value, IfTablepatternStr);
foreach (Match tableMatch in matches)
{
if (!tableMatch.Success) continue;
string newValue = "NULL";
var square = Regex.Match(tableMatch.Value, @"(?<=\[).*?(?=\])");
var curly = Regex.Match(tableMatch.Value, @"(?<=\{\"").*?(?=\""\})");
if (curly.Success && square.Success)
{
var varName = Regex.Match(square.Value, Namepattern);
#region GREATER-OR-EQUAL
var greater = Regex.Match(square.Value, Valuepattern(">>"));
if (varName.Success && greater.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greater.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value > parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(greater.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value > parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
var greaterOrEqual = Regex.Match(square.Value, Valuepattern(">="));
if (varName.Success && greaterOrEqual.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greaterOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value >= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(greaterOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value >= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
#region EQUAL-NOTEQUAL
var equal = Regex.Match(square.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(equal.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !nFloat.Value.Equals(parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(equal.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = nInt.Value != parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
newValue = nBool.Value != parseValue ? string.Empty : curly.Value;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
}
break;
}
}
}
}
var notEqual = Regex.Match(square.Value, Valuepattern("!="));
if (varName.Success && notEqual.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(notEqual.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = nFloat.Value.Equals(parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(notEqual.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = nInt.Value == parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
newValue = nBool.Value == parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
#region LESSER-OR-EQUAL
var lesser = Regex.Match(square.Value, Valuepattern("<<"));
if (varName.Success && lesser.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesser.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value < parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(lesser.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value < parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
var lesserOrEqual = Regex.Match(square.Value, Valuepattern("<="));
if (varName.Success && lesserOrEqual.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesserOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value <= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(lesserOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value <= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
}
go:
value = value.Remove(tableMatch.Index, tableMatch.Length);
value = value.Insert(tableMatch.Index, newValue);
value = value.Replace(@"\n", "\n");
goto tableMatch;
}
consMatch:
matches = Regex.Matches(value, IfConspiratorpatternStr);
foreach (Match consMatch in matches)
{
if (!consMatch.Success) continue;
string newValue = "NULL";
var square = Regex.Match(consMatch.Value, @"(?<=\[).*?(?=\])");
var curly = Regex.Match(consMatch.Value, @"(?<=\{\"").*?(?=\""\})");
if (curly.Success && square.Success)
{
var varName = Regex.Match(square.Value, Namepattern);
#region GREATER-OR-EQUAL
var greater = Regex.Match(square.Value, Valuepattern(">>"));
if (varName.Success && greater.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greater.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value > parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(greater.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value > parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
var greaterOrEqual = Regex.Match(square.Value, Valuepattern(">="));
if (varName.Success && greaterOrEqual.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greaterOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value >= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(greaterOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value >= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
#region EQUAL-NOTEQUAL
var equal = Regex.Match(square.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(equal.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !nFloat.Value.Equals(parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(equal.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = nInt.Value != parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
newValue = nBool.Value != parseValue ? string.Empty : curly.Value;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
}
break;
}
}
}
}
var notEqual = Regex.Match(square.Value, Valuepattern("!="));
if (varName.Success && notEqual.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(notEqual.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = nFloat.Value.Equals(parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(notEqual.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = nInt.Value == parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
newValue = nBool.Value == parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
#region LESSER-OR-EQUAL
var lesser = Regex.Match(square.Value, Valuepattern("<<"));
if (varName.Success && lesser.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesser.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value < parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(lesser.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value < parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
var lesserOrEqual = Regex.Match(square.Value, Valuepattern("<="));
if (varName.Success && lesserOrEqual.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesserOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value <= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(lesserOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value <= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
}
go:
value = value.Remove(consMatch.Index, consMatch.Length);
value = value.Insert(consMatch.Index, newValue);
value = value.Replace(@"\n", "\n");
goto consMatch;
}
targetMatch:
matches = Regex.Matches(value, IfTargetpatternStr);
foreach (Match targetMatch in matches)
{
if (!targetMatch.Success) continue;
string newValue = "NULL";
var square = Regex.Match(targetMatch.Value, @"(?<=\[).*?(?=\])");
var curly = Regex.Match(targetMatch.Value, @"(?<=\{\"").*?(?=\""\})");
if (curly.Success && square.Success)
{
var varName = Regex.Match(square.Value, Namepattern);
#region GREATER-OR-EQUAL
var greater = Regex.Match(square.Value, Valuepattern(">>"));
if (varName.Success && greater.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greater.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value > parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(greater.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value > parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
var greaterOrEqual = Regex.Match(square.Value, Valuepattern(">="));
if (varName.Success && greaterOrEqual.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greaterOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value >= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(greaterOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value >= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
#region EQUAL-NOTEQUAL
var equal = Regex.Match(square.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(equal.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !nFloat.Value.Equals(parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(equal.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = nInt.Value != parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
newValue = nBool.Value != parseValue ? string.Empty : curly.Value;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
}
break;
}
}
}
}
var notEqual = Regex.Match(square.Value, Valuepattern("!="));
if (varName.Success && notEqual.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(notEqual.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = nFloat.Value.Equals(parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(notEqual.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = nInt.Value == parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
newValue = nBool.Value == parseValue ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
#region LESSER-OR-EQUAL
var lesser = Regex.Match(square.Value, Valuepattern("<<"));
if (varName.Success && lesser.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesser.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value < parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(lesser.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value < parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
var lesserOrEqual = Regex.Match(square.Value, Valuepattern("<="));
if (varName.Success && lesserOrEqual.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
}
else
{
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesserOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
newValue = !(nFloat.Value <= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
case NInt nInt:
{
if (int.TryParse(lesserOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
newValue = !(nInt.Value <= parseValue) ? string.Empty : curly.Value;
goto go;
}
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
break;
}
}
}
}
#endregion
}
go:
value = value.Remove(targetMatch.Index, targetMatch.Length);
value = value.Insert(targetMatch.Index, newValue);
value = value.Replace(@"\n", "\n");
goto targetMatch;
}
return Regex.Replace(value, @"(\n\s*){3,}", "\n\n").TrimStart('\n').TrimEnd('\n');
}
public static bool PatternExists(this string value)
{
return Regex.IsMatch(value, IfGlobalpattern) || Regex.IsMatch(value, IfTablepattern) ||
Regex.IsMatch(value, IfConspiratorpattern) || Regex.IsMatch(value, IfConspiratorHasPolicypattern) || Regex.IsMatch(value, IfTargetpattern);
}
public static bool If(this string value, Scheme scheme)
{
var matches = Regex.Matches(value, IfGlobalpattern);
foreach (Match match in matches)
{
if (match.Success)
{
var varName = Regex.Match(match.Value, Namepattern);
#region GREATER-OR-EQUAL
var greater = Regex.Match(match.Value, Valuepattern(">>"));
if (varName.Success && greater.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greater.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value > parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(greater.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value > parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var greaterOrEqual = Regex.Match(match.Value, Valuepattern(">="));
if (varName.Success && greaterOrEqual.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greaterOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value >= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(greaterOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value >= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
#region EQUAL-NOTEQUAL
var equal = Regex.Match(match.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(equal.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!nFloat.Value.Equals(parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(equal.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (nInt.Value != parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
if (nBool.Value != parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var notEqual = Regex.Match(match.Value, Valuepattern("!="));
if (varName.Success && notEqual.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(notEqual.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (nFloat.Value.Equals(parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(notEqual.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (nInt.Value == parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
if (nBool.Value == parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
#region LESSER-OR-EQUAL
var lesser = Regex.Match(match.Value, Valuepattern("<<"));
if (varName.Success && lesser.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesser.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value < parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(lesser.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value < parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var lesserOrEqual = Regex.Match(match.Value, Valuepattern("<="));
if (varName.Success && lesserOrEqual.Success)
{
var nvar = IM.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesserOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value <= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(lesserOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value <= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
}
}
matches = Regex.Matches(value, IfTablepattern);
foreach (Match match in matches)
{
if (match.Success)
{
var varName = Regex.Match(match.Value, Namepattern);
#region GREATER-OR-EQUAL
var greater = Regex.Match(match.Value, Valuepattern(">>"));
if (varName.Success && greater.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greater.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value > parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(greater.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value > parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var greaterOrEqual = Regex.Match(match.Value, Valuepattern(">="));
if (varName.Success && greaterOrEqual.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greaterOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value >= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(greaterOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value >= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
#region EQUAL-NOTEQUAL
var equal = Regex.Match(match.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(equal.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!nFloat.Value.Equals(parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(equal.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (nInt.Value != parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
if (nBool.Value != parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var notEqual = Regex.Match(match.Value, Valuepattern("!="));
if (varName.Success && notEqual.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(notEqual.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (nFloat.Value.Equals(parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(notEqual.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (nInt.Value == parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
if (nBool.Value == parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
#region LESSER-OR-EQUAL
var lesser = Regex.Match(match.Value, Valuepattern("<<"));
if (varName.Success && lesser.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesser.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value < parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(lesser.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value < parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var lesserOrEqual = Regex.Match(match.Value, Valuepattern("<="));
if (varName.Success && lesserOrEqual.Success)
{
var nvar = scheme.Schemer.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesserOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value <= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(lesserOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value <= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
}
}
matches = Regex.Matches(value, IfConspiratorpattern);
foreach (Match match in matches)
{
if (match.Success)
{
var varName = Regex.Match(match.Value, Namepattern);
#region GREATER-OR-EQUAL
var greater = Regex.Match(match.Value, Valuepattern(">>"));
if (varName.Success && greater.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greater.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value > parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(greater.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value > parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var greaterOrEqual = Regex.Match(match.Value, Valuepattern(">="));
if (varName.Success && greaterOrEqual.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greaterOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value >= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(greaterOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value >= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
#region EQUAL-NOTEQUAL
var equal = Regex.Match(match.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(equal.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!nFloat.Value.Equals(parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(equal.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (nInt.Value != parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
if (nBool.Value != parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var notEqual = Regex.Match(match.Value, Valuepattern("!="));
if (varName.Success && notEqual.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(notEqual.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (nFloat.Value.Equals(parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(notEqual.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (nInt.Value == parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
if (nBool.Value == parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
#region LESSER-OR-EQUAL
var lesser = Regex.Match(match.Value, Valuepattern("<<"));
if (varName.Success && lesser.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesser.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value < parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(lesser.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value < parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var lesserOrEqual = Regex.Match(match.Value, Valuepattern("<="));
if (varName.Success && lesserOrEqual.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesserOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value <= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(lesserOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value <= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
}
}
matches = Regex.Matches(value, IfConspiratorHasPolicypattern);
foreach (Match match in matches)
{
if (match.Success)
{
var varName = Regex.Match(match.Value, Namepattern);
#region EQUAL-NOTEQUAL
var equal = Regex.Match(match.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var hasPolicy = scheme.Schemer.Conspirator.HasPolicy(equal.Value);
if (!hasPolicy)
return false;
}
#endregion
}
}
matches = Regex.Matches(value, IfTargetHasPolicypattern);
foreach (Match match in matches)
{
if (match.Success)
{
var varName = Regex.Match(match.Value, Namepattern);
#region EQUAL-NOTEQUAL
var equal = Regex.Match(match.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var hasPolicy = scheme.Schemer.Target.HasPolicy(equal.Value);
if (!hasPolicy)
return false;
}
#endregion
}
}
matches = Regex.Matches(value, IfConspiratorNotHasPolicypattern);
foreach (Match match in matches)
{
if (match.Success)
{
var varName = Regex.Match(match.Value, Namepattern);
#region EQUAL-NOTEQUAL
var equal = Regex.Match(match.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var hasPolicy = scheme.Schemer.Conspirator.HasPolicy(equal.Value);
if (hasPolicy)
return false;
}
#endregion
}
}
matches = Regex.Matches(value, IfTargetNotHasPolicypattern);
foreach (Match match in matches)
{
if (match.Success)
{
var varName = Regex.Match(match.Value, Namepattern);
#region EQUAL-NOTEQUAL
var equal = Regex.Match(match.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var hasPolicy = scheme.Schemer.Target.HasPolicy(equal.Value);
if (hasPolicy)
return false;
}
#endregion
}
}
matches = Regex.Matches(value, IfTargetpattern);
foreach (Match match in matches)
{
if (match.Success)
{
var varName = Regex.Match(match.Value, Namepattern);
#region GREATER-OR-EQUAL
var greater = Regex.Match(match.Value, Valuepattern(">>"));
if (varName.Success && greater.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greater.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value > parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(greater.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value > parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var greaterOrEqual = Regex.Match(match.Value, Valuepattern(">="));
if (varName.Success && greaterOrEqual.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(greaterOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value >= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(greaterOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value >= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
#region EQUAL-NOTEQUAL
var equal = Regex.Match(match.Value, Valuepattern("=="));
if (varName.Success && equal.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(equal.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!nFloat.Value.Equals(parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(equal.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (nInt.Value != parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
if (nBool.Value != parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var notEqual = Regex.Match(match.Value, Valuepattern("!="));
if (varName.Success && notEqual.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(notEqual.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (nFloat.Value.Equals(parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(notEqual.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (nInt.Value == parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NBool nBool:
{
if (bool.TryParse(equal.Value, out bool parseValue))
{
if (nBool.Value == parseValue)
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
#region LESSER-OR-EQUAL
var lesser = Regex.Match(match.Value, Valuepattern("<<"));
if (varName.Success && lesser.Success)
{
var nvar = scheme.Schemer.Target.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesser.Value, NumberStyles.Float, CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value < parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(lesser.Value, NumberStyles.Integer, CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value < parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
var lesserOrEqual = Regex.Match(match.Value, Valuepattern("<="));
if (varName.Success && lesserOrEqual.Success)
{
var nvar = scheme.Schemer.Conspirator.GetVariable(varName.Value);
if (nvar == null)
{
NDebug.Log("The specified variable in the condition command could not be found.",
NLogType.Error);
return false;
}
switch (nvar)
{
case NFloat nFloat:
{
if (float.TryParse(lesserOrEqual.Value, NumberStyles.Float,
CultureInfo.InvariantCulture,
out float parseValue))
{
if (!(nFloat.Value <= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
case NInt nInt:
{
if (int.TryParse(lesserOrEqual.Value, NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int parseValue))
{
if (!(nInt.Value <= parseValue))
return false;
}
else
{
NDebug.Log(
"The condition command is invalid. Please check the command. You can refer to the documentation for help.",
NLogType.Error);
return false;
}
break;
}
}
}
#endregion
}
}
return true;
}
}
}