private StatementSyntax CreateScriptInvocationSyntax(List <StatementSyntax> dependentStatements)
        {
            // Collect names of value supplier variables
            List <string> variableIdentifiers = ObjectBuilder.Inputs.Select((t, index) => Inputs[index].VariableSyntaxName(t.Input.VariableName)).ToList();

            // add instance method invocation
            var invocationExpression = MySyntaxFactory.MethodInvocation("RunScript", variableIdentifiers, m_instanceName);

            if (dependentStatements == null)
            {
                return(SyntaxFactory.ExpressionStatement(invocationExpression));
            }

            var ifStatement = MySyntaxFactory.IfExpressionSyntax(invocationExpression, dependentStatements);

            return(ifStatement);
        }
        internal override void CollectInputExpressions(List <StatementSyntax> expressions)
        {
            List <string> uniqueVariableIdentifiers = new List <string>();

            for (var i = 0; i < ObjectBuilder.InputNames.Count; i++)
            {
                uniqueVariableIdentifiers.Add(Inputs[i].VariableSyntaxName(ObjectBuilder.InputIDs[i].VariableName));
            }

            expressions.Add(
                SyntaxFactory.ExpressionStatement(
                    MySyntaxFactory.MethodInvocation(ObjectBuilder.TriggerName, uniqueVariableIdentifiers)
                    )
                );

            base.CollectInputExpressions(expressions);
        }
        internal override void CollectInputExpressions(List <StatementSyntax> expressions)
        {
            base.CollectInputExpressions(expressions);

            // MyLocalization.Static["context", "messageId"];
            var localizationAccessExpression = SyntaxFactory.ElementAccessExpression(
                SyntaxFactory.MemberAccessExpression(
                    SyntaxKind.SimpleMemberAccessExpression,
                    SyntaxFactory.IdentifierName("VRage.Game.Localization.MyLocalization"),
                    SyntaxFactory.IdentifierName("Static")
                    )
                ).WithArgumentList(
                SyntaxFactory.BracketedArgumentList(
                    SyntaxFactory.SeparatedList <ArgumentSyntax>(
                        new SyntaxNodeOrToken[]
            {
                SyntaxFactory.Argument(
                    MySyntaxFactory.Literal(typeof(string).Signature(), ObjectBuilder.Context)),
                SyntaxFactory.Token(SyntaxKind.CommaToken),
                SyntaxFactory.Argument(
                    MySyntaxFactory.Literal(typeof(string).Signature(), ObjectBuilder.MessageId))
            })
                    )
                );

            // ToString() invocation expression
            var toStringExpression = SyntaxFactory.InvocationExpression(
                SyntaxFactory.MemberAccessExpression(
                    SyntaxKind.SimpleMemberAccessExpression,
                    localizationAccessExpression,
                    SyntaxFactory.IdentifierName("ToString")
                    )
                );

            // String tmpVariableName = the above
            string tmpVariableName = "localizedText_" + ObjectBuilder.ID;

            if (m_inputParameterNodes.Count == 0)
            {
                tmpVariableName = VariableSyntaxName();
            }

            var localizedTextVariableSyntax = MySyntaxFactory.LocalVariable(typeof(string).Signature(),
                                                                            tmpVariableName, toStringExpression);

            if (m_inputParameterNodes.Count > 0)
            {
                // Prepare variable names for creation of string.Format call
                var parameterVariableNames = new List <string>();
                parameterVariableNames.Add(tmpVariableName);
                for (int index = 0; index < m_inputParameterNodes.Count; index++)
                {
                    var node = m_inputParameterNodes[index];
                    parameterVariableNames.Add(node.VariableSyntaxName(ObjectBuilder.ParameterInputs[index].VariableName));
                }

                // string.Format(....) call
                var stringFormatSyntax = MySyntaxFactory.MethodInvocation("Format", parameterVariableNames, "string");
                // node variable syntax creation
                var nodeVariableSyntax = MySyntaxFactory.LocalVariable(typeof(string).Signature(), VariableSyntaxName(), stringFormatSyntax);

                expressions.Add(localizedTextVariableSyntax);
                expressions.Add(nodeVariableSyntax);
            }
            else
            {
                expressions.Add(localizedTextVariableSyntax);
            }
        }
 public StatementSyntax DisposeCallDeclaration()
 {
     return(SyntaxFactory.ExpressionStatement(MySyntaxFactory.MethodInvocation("Dispose", null, m_instanceName)));
 }