Exemple #1
0
    public IEnumerator Write()
    {
        yield return(new WaitForSeconds(waitAtTheStart));

        foreach (var key in sentenceKeys)
        {
            wobblyText.ResetIndexs();
            shakeText.ResetIndexs();
            jellyText.ResetIndexs();
            writerText.text = "";
            if (!playSoundEachLetter && playSound)
            {
                AudioManager.Instance.PlayClip(soundName);
            }
            string sentence = "";
            if (MultiLang.GetTranslation(key) != null)
            {
                sentence = MultiLang.GetTranslation(key);
            }
            else
            {
                sentence = key;
            }
            List <string> tags             = new List <string>();
            string        tagName          = "";
            bool          tag              = false;
            int           wobblyStartIndex = 0;
            int           shakeStartIndex  = 0;
            int           jellyStartIndex  = 0;
            for (int i = 0; i < sentence.Length; i++)
            {
                char letter = sentence[i];

                string letterStr = letter.ToString();
                if (tag)
                {
                    tagName += letter;
                    if (letter == '>')
                    {
                        tag = false;
                        tags.Add(tagName);
                        if (tagName.Contains("wobbly"))
                        {
                            int sumLen = 0;
                            foreach (var item in tags)
                            {
                                sumLen += item.Length;
                            }
                            int lenOffset = i - sumLen + 1;
                            if (!tagName.Contains("/"))
                            {
                                wobblyText.AddStartIndex(lenOffset);
                                wobblyStartIndex = lenOffset;
                            }
                            else
                            {
                                wobblyText.AddEndIndex(wobblyStartIndex, lenOffset);
                                wobblyStartIndex = 0;
                            }
                        }
                        else if (tagName.Contains("shake"))
                        {
                            int sumLen = 0;
                            foreach (var item in tags)
                            {
                                sumLen += item.Length;
                            }
                            int lenOffset = i - sumLen + 1;
                            if (!tagName.Contains("/"))
                            {
                                shakeText.AddStartIndex(lenOffset);
                                shakeStartIndex = lenOffset;
                            }
                            else
                            {
                                shakeText.AddEndIndex(shakeStartIndex, lenOffset);
                                shakeStartIndex = 0;
                            }
                        }
                        else if (tagName.Contains("jelly"))
                        {
                            int sumLen = 0;
                            foreach (var item in tags)
                            {
                                sumLen += item.Length;
                            }
                            int lenOffset = i - sumLen + 1;
                            if (!tagName.Contains("/"))
                            {
                                jellyText.AddStartIndex(lenOffset);
                                jellyStartIndex = lenOffset;
                            }
                            else
                            {
                                jellyText.AddEndIndex(jellyStartIndex, lenOffset);
                                jellyStartIndex = 0;
                            }
                        }
                        else
                        {
                            writerText.text += tagName;
                        }
                        tagName = "";
                    }
                }
                else
                {
                    if (letter == '<')
                    {
                        tag      = true;
                        tagName += letter;
                    }
                    else
                    {
                        if (playSoundEachLetter && playSound)
                        {
                            AudioManager.Instance.PlayClipWithRandomPitch(soundName, minPitch, maxPitch);
                        }
                        writerText.text += letter;
                        if (letter.ToString().IndexOfAny(stopperChars) != -1)
                        {
                            yield return(new WaitForSeconds(waitBetweenLetters * 3));
                        }
                        yield return(new WaitForSeconds(waitBetweenLetters));
                    }
                }
            }
            resume.SetActive(true);
            yield return(new WaitUntil(() => Input.GetKeyDown(KeyCode.Space)));

            resume.SetActive(false);
        }
        resume.SetActive(true);
        yield return(new WaitUntil(() => Input.GetKeyDown(KeyCode.Space)));

        resume.SetActive(false);
        if (playEvent)
        {
            AfterEvent.Invoke();
        }
    }
Exemple #2
0
 private void Start()
 {
     GetComponent <Text>().text = MultiLang.GetTranslation(key);
 }