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); }
public void SetInstructionsCorrectly() { var scene = new Scene("test"); var instruction = new SceneInstructions(); scene.Add(instruction); Assert.Equal(instruction, scene.Instructions); }
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); }
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); }
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); }
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); }
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); }
public void AddsAndReturnCorrectly() { var instruction = new GoToAndReturn(); var instructions = new SceneInstructions(); instructions.Add(instruction); var result = Assert.Single(instructions.Instructions); Assert.Equal(instruction, result); }
protected override Task End(SceneInstructions instructions, TextGeneratorContext context) { context.CurrentLevel--; return(Noop(context)); }
protected override async Task Begin(SceneInstructions instructions, TextGeneratorContext context) { await context.WriteLine("*then"); context.CurrentLevel++; }
protected override Task Begin(SceneInstructions instructions, CodeGeneratorContext context) { var gen = (CodeMemberMethod)context.CodeScope.Peek(); return(base.Begin(instructions, context)); }
protected virtual Task End(SceneInstructions instructions, TContext context) { return(Noop(context)); }