private static bool EvaluateComparison(int a, ScriptingComparison comp, int b) { return(comp switch { ScriptingComparison.LessThan => a <b, ScriptingComparison.LessOrEqual => a <= b, ScriptingComparison.EqualTo => a == b, ScriptingComparison.GreaterOrEqual => a >= b, ScriptingComparison.GreaterThan => a> b, ScriptingComparison.NotEqual => a != b, _ => throw new ArgumentException($"Invalid operator: {comp}", nameof(comp)), });
public void TestCounter(ScriptingComparison comparison, int compareValue, bool expectedResult) { _fixture.Game.Scripting.Counters["MyCounter"] = 5; var condition = new ScriptCondition( ScriptConditionType.Counter, new ScriptArgument(ScriptArgumentType.CounterName, "MyCounter"), new ScriptArgument(ScriptArgumentType.Comparison, (int)comparison), new ScriptArgument(ScriptArgumentType.Integer, compareValue)); var result = _fixture.Game.Scripting.EvaluateScriptCondition(condition); Assert.Equal(expectedResult, result); }
public void TestCounter(ScriptingComparison comparison, int compareValue, bool expectedResult) { var game = _fixture.GetGame(SageGame.CncGenerals); game.Scripting.SetCounterValue("MyCounter", 5); var condition = new ScriptCondition( ScriptConditionType.Counter, new ScriptArgument(ScriptArgumentType.CounterName, "MyCounter"), new ScriptArgument(ScriptArgumentType.Comparison, (int)comparison), new ScriptArgument(ScriptArgumentType.Integer, compareValue)); var result = game.Scripting.EvaluateScriptCondition(condition); Assert.Equal(expectedResult, result); }
public static bool Counter(ScriptExecutionContext context, [ScriptArgumentType(ScriptArgumentType.CounterName)] string counterName, [ScriptArgumentType(ScriptArgumentType.Comparison)] ScriptingComparison comparison, int compareValue) { return(EvaluateComparison(context.Scripting.Counters[counterName], comparison, compareValue)); }