Exemplo n.º 1
0
    private IEnumerator PrintQuestDescription(ITutorialQuest quest)
    {
        //Loop quest messages
        while (!quest.Completed())
        {
            string getCurrentMessage = quest.GetDescription();

            //Print message
            mMessageEnd = false;
            questDescription.fontStyle = FontStyle.Normal;
            mCurrentMessageString      = "";

            mAudioSource.clip = character;

            for (int i = 0; i < getCurrentMessage.Length; i++)
            {
                yield return(new WaitForSeconds(characterTime));

                //Append single character
                mCurrentMessageString += getCurrentMessage[i];
                questDescription.text  = mCurrentMessageString;

                //Play sound
                if ((i % mCharacterSoundOffset) == 0)
                {
                    mAudioSource.Play();
                    mCharacterSoundOffset = randomizedSounds ? UnityEngine.Random.Range(2, characterSound) : characterSound;
                }

                //Skipping whole message
                if (mMessageEnd)
                {
                    questDescription.text = getCurrentMessage;
                    mMessageEnd           = false;
                    break;
                }
            }

            mAudioSource.clip = sentenceEnd;
            mAudioSource.Play();

            questDescription.fontStyle = FontStyle.Italic;

            //Wait for task to finish
            while (!quest.TaskCompleted())
            {
                yield return(new WaitForFixedUpdate());
            }

            skipText.enabled = true;

            //Wait for skip buttons
            while (!mMessageEnd)
            {
                yield return(null);
            }

            //Reset description text and hide skip message
            questDescription.text = "";
            skipText.enabled      = false;
        }

        yield return(null);
    }