コード例 #1
0
        protected async Task Generate(SceneInstructions instructions, TContext context)
        {
            if (instructions == null)
            {
                return;
            }
            await Begin(instructions, context);

            var instructionIndex = 0;

            foreach (var instruction in instructions.Instructions)
            {
                context.SetLoop(instructionIndex, instructions.Instructions.Count - 1);
                if (instruction is SceneInstructionContainer container)
                {
                    await GenerateComment(instruction, context);
                    await Generate(container, context);

                    context.ClearLoop();
                    continue;
                }
                await GenerateComment(instruction, context);
                await Render(instruction, context);

                context.ClearLoop();
            }
            await End(instructions, context);
        }
コード例 #2
0
        public void SetInstructionsCorrectly()
        {
            var scene       = new Scene("test");
            var instruction = new SceneInstructions();

            scene.Add(instruction);
            Assert.Equal(instruction, scene.Instructions);
        }
コード例 #3
0
        public void DecreaseAddsCorrectly()
        {
            var instruction  = new Decrease("test", 3);
            var instructions = new SceneInstructions();

            instructions.Add(instruction);
            var result = Assert.Single(instructions.Instructions);

            Assert.Equal(instruction, result);
        }
コード例 #4
0
        public void AddsCorrectly()
        {
            var hear         = new If(new ValueWrapper(new True()));
            var instructions = new SceneInstructions();

            instructions.Add(hear);
            var result = Assert.Single(instructions.Instructions);

            Assert.Equal(hear, result);
        }
コード例 #5
0
        public void AddsCorrectly()
        {
            var hear         = new Hear("test");
            var instructions = new SceneInstructions();

            instructions.Add(hear);
            var result = Assert.Single(instructions.Instructions);

            Assert.Equal(hear, result);
        }
        public void AddsCorrectly()
        {
            var instruction  = new Restart();
            var instructions = new SceneInstructions();

            instructions.Add(instruction);
            var result = Assert.Single(instructions.Instructions);

            Assert.Equal(instruction, result);
        }
コード例 #7
0
        public void UnflagAddsCorrectly()
        {
            var instruction  = new Unflag("test");
            var instructions = new SceneInstructions();

            instructions.Add(instruction);
            var result = Assert.Single(instructions.Instructions);

            Assert.Equal(instruction, result);
        }
コード例 #8
0
        public void AddsCorrectly()
        {
            var instruction  = new SlotAssignment("test", "AMAZON.Number");
            var instructions = new SceneInstructions();

            instructions.Add(instruction);
            var result = Assert.Single(instructions.Instructions);

            Assert.Equal(instruction, result);
        }
コード例 #9
0
        public void AddsAndReturnCorrectly()
        {
            var instruction  = new GoToAndReturn();
            var instructions = new SceneInstructions();

            instructions.Add(instruction);
            var result = Assert.Single(instructions.Instructions);

            Assert.Equal(instruction, result);
        }
コード例 #10
0
 protected override Task End(SceneInstructions instructions, TextGeneratorContext context)
 {
     context.CurrentLevel--;
     return(Noop(context));
 }
コード例 #11
0
        protected override async Task Begin(SceneInstructions instructions, TextGeneratorContext context)
        {
            await context.WriteLine("*then");

            context.CurrentLevel++;
        }
コード例 #12
0
        protected override Task Begin(SceneInstructions instructions, CodeGeneratorContext context)
        {
            var gen = (CodeMemberMethod)context.CodeScope.Peek();

            return(base.Begin(instructions, context));
        }
コード例 #13
0
 protected virtual Task End(SceneInstructions instructions, TContext context)
 {
     return(Noop(context));
 }