Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }
Пример #4
0
        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));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }