public void Update(GameTime gameTime) { if (CurrentTextObject == null) { CurrentTextObject = TxtReader.NextTxtObject(); } if (Dialogue != null) { EndOfLine = Dialogue.Complete(); } switch (CurrentTextObject.GetType().Name) { case "Background": Background = (Background)CurrentTextObject; PriorCharacterAnimation = null; CurrentTextObject = TxtReader.NextTxtObject(); break; case "CharacterAnimation": CharacterAnimation CurrentAnimation = (CharacterAnimation)CurrentTextObject; DefaultAnimation = CurrentAnimation; CurrentTextObject = TxtReader.NextTxtObject(); break; case "LineOfDialogue": Dialogue = (LineOfDialogue)CurrentTextObject; if (DefaultAnimation != null) { Dialogue.SetSecondAnimation(DefaultAnimation, DESATURATION_PERCENT); } if (PreviousButtonState == ButtonState.Pressed && Mouse.GetState().LeftButton == ButtonState.Released && EndOfLine) { CharacterAnimation CurrentCharacter = Dialogue.CharacterAnimation; CurrentTextObject = TxtReader.NextTxtObject(); EndOfLine = false; CharacterAnimation NextCharacter = null; if (CurrentTextObject != null) { NextCharacter = CurrentCharacterAnimation(); } if (CurrentCharacter != null && NextCharacter != null && !NextCharacter.CharacterName.Equals(CurrentCharacter.CharacterName)) { PriorCharacterAnimation = CurrentCharacter; DefaultAnimation = null; } } break; default: CurrentTextObject = TxtReader.NextTxtObject(); break; } TextEnd = TxtReader.IsEmpty(); if (!TextEnd) { CurrentTextObject.Update(gameTime); PreviousButtonState = Mouse.GetState().LeftButton; } }