示例#1
0
        public static void GenerateRecap(CodeMemberMethod generate, Text text, CodeGeneratorContext context)
        {
            CodeGeneration_Randomiser.Ensure(context);

            generate.Statements.Add(new CodeMethodInvokeExpression(
                                        CodeConstants.RequestVariableRef,
                                        "SetValue",
                                        new CodePrimitiveExpression("scene_recap"),
                                        CodeConstants.GeneratePickFrom(text.Content)));
        }
示例#2
0
        public static void GenerateSay(CodeMemberMethod generate, Text text, CodeGeneratorContext context)
        {
            CodeGeneration_Randomiser.Ensure(context);

            foreach (var content in text.Content)
            {
                var variableReady = VariableSplitArray(content);
                var method        = new CodeMethodInvokeExpression(
                    new CodeTypeReferenceExpression("Output"),
                    "AddSpeech",
                    new CodeVariableReferenceExpression(CodeConstants.RequestVariableName),
                    variableReady.Length == 1 ? variableReady[0] :
                    new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(typeof(string)), "Concat",
                                                   variableReady));
                generate.Statements.Add(method);
            }
        }
        public static void Ensure(CodeGeneratorContext context)
        {
            if (context.SceneFiles.ContainsKey("Randomiser"))
            {
                return;
            }

            var code = new CodeCompileUnit();
            var ns   = new CodeNamespace(context.Options.SafeRootNamespace);

            ns.Imports.Add(new CodeNamespaceImport("System.Security.Cryptography"));
            code.Namespaces.Add(ns);

            var randomiserClass = CodeGeneration_Randomiser.Generate();

            ns.Types.Add(randomiserClass);

            context.SceneFiles.Add("Randomiser", code);
        }