private List <TextTypeNode> parseText(TextData data) { string text = data.text; text = stripNotes(text); List <TextTypeNode> blobs = new List <TextTypeNode>(); //yolo for (int i = 0; i < text.Length; ++i) { if (text[i] == '<') { int closeIndex = text.IndexOf('>', i); string tagString = text.Substring(i, closeIndex - i + 1); i = closeIndex; TextTypeNode node = new TextTypeNode().InitTag(tagString); blobs.Add(node); } else if (text[i] == '{') { int closeIndex = text.IndexOf('}', i); string pauseString = text.Substring(i + 1, closeIndex - i - 1); i = closeIndex; TextTypeNode node = new TextTypeNode().InitPause(float.Parse(pauseString)); blobs.Add(node); } else { char[] args = { '<', '{' }; int endIndex = text.IndexOfAny(args, i); string mainString; if (endIndex >= 0) { mainString = text.Substring(i, endIndex - i); i = endIndex - 1; } else { mainString = text.Substring(i); i = text.Length; } TextTypeNode node = new TextTypeNode().InitText(mainString); blobs.Add(node); } } return(blobs); }
public void TypeText(string textToWrite, float letterDelay, Action onFinishedPlaying) { RawTextTypedSoFar = ""; VolatileTextTypedSoFar = ""; useSkipDelay = false; if (current != null) { StopCoroutine(current); } List <TextTypeNode> nodes = new List <TextTypeNode>(); TextTypeNode node = new TextTypeNode().InitText(textToWrite); current = StartCoroutine(typeText(nodes, letterDelay, onFinishedPlaying)); }