Beispiel #1
0
    private void Update()
    {
        if (textQueue == null || textQueue.Length == 0)
        {
            return;
        }
        if (paused)
        {
            return;
        }

        if (textEffect != null)
        {
            textEffect.updateEffects();
        }

        if (displayImmediate)
        {
            return;
        }
        if (currentCharacter >= letterReferences.Length)
        {
            return;
        }

        letterTimer += Time.deltaTime;

        if (letterTimer > timePerLetter)
        {
            if (currentCharacter < letterReferences.Length)
            {
                while (textQueue[currentLine].Text[currentCharacter] == '[')
                {
                    string command = parseCommandInline(textQueue[currentLine].Text, ref currentCharacter);
                    currentCharacter++;                      // we're not in a continuable loop so move to the character after the ] manually

                    float lastLetterTimer   = letterTimer;   // kind of a dirty hack so we can at least release 0.2.0 sigh
                    float lastTimePerLetter = timePerLetter; // i am so sorry
                    inUpdateControlCommand(command);
                    if (lastLetterTimer != letterTimer || lastTimePerLetter != timePerLetter)
                    {
                        return;
                    }
                    if (currentCharacter >= textQueue[currentLine].Text.Length)
                    {
                        return;
                    }
                }
                if (letterReferences[currentCharacter] != null)
                {
                    letterReferences[currentCharacter].enabled = true;
                    if (letterSound != null && !muted)
                    {
                        letterSound.Play();
                    }
                }
                currentCharacter++;
            }
            letterTimer = 0.0f;
        }
    }