Exemplo n.º 1
0
        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;
            }
        }