private void GetDialogueLine(DialogueTextEvent textEvent) { int speakerID = textEvent.speakerID; CharacterProfile currentSpeaker = speakers[speakerID]; CurrentSpeakerID = speakerID; CurrentSpeakerName = currentSpeaker.characterName; CurrentSpeakerText = textEvent.line; TextLength = GetTextLength(CurrentSpeakerText); CurrentSpeakerFace = currentSpeaker.face; CurrentSpeakerTone = currentSpeaker.chatTone; audioSource.clip = CurrentSpeakerTone; CharacterRevealSpeedMultiplier = textEvent.characterRevealSpeedMultiplier; float delay = textEvent.delay; Action action = () => { RevealedCharacterCount = 0; OnLineRevealed?.Invoke(); currentConversation.InvokeEvent(currentPosition); }; if (delay > 0f) { IsWaitingOnDelayedText = true; action += () => IsWaitingOnDelayedText = false; OnStartDelayedText?.Invoke(); DelayedTextEvent(textEvent.delay, action); } else { action?.Invoke(); } }
public void Load() { string convo = conversationFile.text; string[] lines = convo.Split('\n'); DialogueTextEvent[] previousConversation = conversation; int fileLineCount = LineCountFromFile; if (conversation == null || conversation.Length != fileLineCount) { conversation = new DialogueTextEvent[fileLineCount]; previousConversation = conversation; } int previousLength = previousConversation.Length; int lineCounter = 0; for (int i = 0; lineCounter < fileLineCount; i++) { string[] line = lines[i].Split('|'); byte speaker = (previousLength <= lineCounter || previousConversation[lineCounter] == null) ? (byte)0 : previousConversation[lineCounter].speakerID; float delay = (previousLength <= lineCounter || previousConversation[lineCounter] == null) ? 0f : previousConversation[lineCounter].delay; float revealSpeed = (previousLength <= lineCounter || previousConversation[lineCounter] == null) ? 1f : previousConversation[lineCounter].characterRevealSpeedMultiplier; if (line.Length > 1 && byte.TryParse(line[0], out speaker)) { conversation[lineCounter] = new DialogueTextEvent(); conversation[lineCounter].speakerID = speaker; conversation[lineCounter].delay = delay; conversation[lineCounter].characterRevealSpeedMultiplier = revealSpeed; conversation[lineCounter].line = line[1]; lineCounter++; } //check for comment else if (line.Length == 1 && line[0].Length > 0 && line[0][0] == '#') { } //check for invalid line else { conversation[lineCounter] = new DialogueTextEvent(); conversation[lineCounter].line = DialogueTextEvent.DEFAULT_LINE; lineCounter++; } } }