public override bool BuildMacro(RichPresenceDisplayFunction.RichPresenceDisplayContext context, InterpreterScope scope, out ExpressionBase result) { var macro = GetStringParameter(scope, "macro", out result); if (macro == null) { return(false); } var expression = GetParameter(scope, "expression", out result); if (expression == null) { return(false); } var value = TriggerBuilderContext.GetValueString(expression, scope, out result); if (value == null) { return(false); } var functionCall = scope.GetContext <FunctionCallExpression>(); var valueFormat = GetValueFormat(macro.Value); context.RichPresence.AddValueField(functionCall, macro.Value, valueFormat); result = new StringConstantExpression(String.Format("@{0}({1})", macro.Value, value)); return(true); }
private string ProcessValue(InterpreterScope scope, string parameter, out ExpressionBase result) { var expression = GetParameter(scope, parameter, out result); if (expression == null) { return(null); } var functionCallExpression = expression as FunctionCallExpression; if (functionCallExpression != null) { var functionDefinition = scope.GetFunction(functionCallExpression.FunctionName.Name); if (functionDefinition is MaxOfFunction) { var builder = new StringBuilder(); foreach (var value in functionCallExpression.Parameters) { if (builder.Length > 0) { builder.Append('$'); } builder.Append(TriggerBuilderContext.GetValueString(value, scope, out result)); } return(builder.ToString()); } } return(TriggerBuilderContext.GetValueString(expression, scope, out result)); }
private string ProcessValue(InterpreterScope scope, string parameter, out ExpressionBase result) { var expression = GetParameter(scope, parameter, out result); if (expression == null) { return(null); } return(TriggerBuilderContext.GetValueString(expression, scope, out result)); }
public void TestGetValueString(string input, string expected) { ExpressionBase error; InterpreterScope scope = new InterpreterScope(AchievementScriptInterpreter.GetGlobalScope()); scope.Context = new TriggerBuilderContext(); var expression = Parse(input); var result = TriggerBuilderContext.GetValueString(expression, scope, out error); Assert.That(error, Is.Null); Assert.That(result, Is.EqualTo(expected)); }
public override bool BuildMacro(RichPresenceDisplayFunction.RichPresenceDisplayContext context, InterpreterScope scope, out ExpressionBase result) { var name = GetStringParameter(scope, "name", out result); if (name == null) { return(false); } var expression = GetParameter(scope, "expression", out result); if (expression == null) { return(false); } var dictionary = GetDictionaryParameter(scope, "dictionary", out result); if (dictionary == null) { return(false); } var fallback = GetStringParameter(scope, "fallback", out result); if (fallback == null) { return(false); } var value = TriggerBuilderContext.GetValueString(expression, scope, out result); if (value == null) { return(false); } var functionCall = scope.GetContext <FunctionCallExpression>(); var error = context.RichPresence.AddLookupField(functionCall, name.Value, dictionary, fallback); if (error != null) { result = error; return(false); } result = new StringConstantExpression(String.Format("@{0}({1})", name.Value, value)); return(true); }
public override ParseErrorExpression BuildMacro(RichPresenceDisplayFunction.RichPresenceDisplayContext context, InterpreterScope scope, FunctionCallExpression functionCall) { var name = (StringConstantExpression)functionCall.Parameters.First(); var expression = functionCall.Parameters.ElementAt(1); var dictionary = (DictionaryExpression)functionCall.Parameters.ElementAt(2); ExpressionBase result; var value = TriggerBuilderContext.GetValueString(expression, scope, out result); if (value == null) { return((ParseErrorExpression)result); } context.RichPresence.AddLookupField(name.Value, dictionary); context.DisplayString.Append('@'); context.DisplayString.Append(name.Value); context.DisplayString.Append('('); context.DisplayString.Append(value); context.DisplayString.Append(')'); return(null); }