public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); if (myContext.ParsedText is null) { return; } var value = int.Parse(myContext.ParsedText); if (value < 1) { return; } if (value > 30000) { parsingContext.LogError(reader, "O limite de tempo não pode ser maior que 30 segundos."); return; } var ctx = (ChoiceParentParsingContext)parentParsingContext; ctx.Choice.TimeLimit = TimeSpan.FromMilliseconds(value); }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); var parsedText = myContext.ParsedText; parsingContext.SceneContext.Reset(); if (string.IsNullOrWhiteSpace(parsedText)) { var node = new PauseNode(myContext.When); parentParsingContext.AddNode(node); return; } var value = int.Parse(parsedText); if (value <= 0) { parsingContext.LogError(reader, "O tempo de espera precisa ser maior que zero."); return; } if (value > 5000) { parsingContext.LogError(reader, "O tempo de espera não pode ser maior que 5000."); return; } var timedPauseNode = new TimedPauseNode(TimeSpan.FromMilliseconds(value), myContext.When); parentParsingContext.AddNode(timedPauseNode); }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); var node = new ScrollNode(myContext.When); parentParsingContext.AddNode(node); }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); var ctx = (ChoiceOptionParentParsingContext)parentParsingContext; ctx.Option.DisabledText = myContext.ParsedText; }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); var ctx = (ChoiceParentParsingContext)parentParsingContext; ctx.Choice.RandomOrder = true; }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); if (myContext.ParsedText is null) { return; } var ctx = (ChoiceParentParsingContext)parentParsingContext; ctx.Choice.Default = myContext.ParsedText; }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); var parsedText = myContext.ParsedText; if (parsedText is null) { return; } var varSet = new VarSet(parsedText, null); parentParsingContext.AddNode(new VarSetNode(varSet)); }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); var parsedText = myContext.ParsedText; if (parsedText is null) { return; } var node = new ProtagonistNode(parsedText.Length == 0 ? null : parsedText, myContext.When); parentParsingContext.AddNode(node); parsingContext.RegisterDismissNode(DismissNode); }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); if (myContext.ParsedText is null) { return; } if (myContext.ParsedText.Length == 0) { parsingContext.LogError(reader, "Era esperado o nome da cor."); return; } var state = new BackgroundState(myContext.ParsedText, BackgroundType.Color, BackgroundPosition.Undefined); var node = new BackgroundNode(state, myContext.When); parentParsingContext.AddNode(node); }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); if (myContext.ParsedText is null) { return; } var result = conditionParser.Parse(myContext.ParsedText); if (result.Condition is null) { parsingContext.LogError(reader, "Condição EnabledWhen inválida. " + result.Message); return; } var ctx = (IChoiceOptionParentParsingContext)parentParsingContext; ctx.Option.EnabledWhen = result.Condition; }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); var parsedText = myContext.ParsedText; if (parsedText is null) { return; } if (parsingContext.SceneContext.HasMood) { parsingContext.LogError(reader, "Mais de uma definição de humor para a mesma cena."); return; } parsingContext.SceneContext.HasMood = true; var moodType = Enum.Parse <MoodType>(parsedText); parentParsingContext.AddNode(new MoodNode(moodType)); }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); var parsedText = myContext.ParsedText; if (parsedText is null) { return; } var varSet = varSetParser.Parse(parsedText); if (varSet is null) { parsingContext.LogError(reader, "Expressão de atribuição de variável inválida."); } else { parentParsingContext.AddNode(new VarSetNode(varSet)); } }
public async Task ParseAsync(XmlReader reader, IParsingContext parsingContext, IParentParsingContext parentParsingContext) { var myContext = new TextParentParsingContext(); await elementParser.ParseAsync(reader, parsingContext, myContext, Settings); var parsedText = myContext.ParsedText; if (parsedText is null) { return; } if (parsingContext.SceneContext.HasMusic) { parsingContext.LogError(reader, "Mais de uma definição de música para a mesma cena."); return; } parsingContext.SceneContext.HasMusic = true; var node = new MusicNode(parsedText.Length == 0 ? null : parsedText, myContext.When); parentParsingContext.AddNode(node); parsingContext.RegisterDismissNode(DismissNode); }