private void NextDialogueSnippet(bool eventTrigger) { // If the current textbox makes use of an eventTrigger, then controller/keyboard inputs are not allowed to advance it if (!eventTrigger && (_currentDialogueSnippet != null && _currentDialogueSnippet._eventTriggered)) { return; } CheckEndTriggers(); if (_currentDialogueList.Count != 0) { _currentDialogueSnippet = _currentDialogueList.Dequeue(); _currentlyActiveText.text = _currentDialogueSnippet._text; CheckStartTriggers(); if (_voicePlayback != null) { _voicePlayback.Stop(); _voicePlayback.clip = _currentDialogueSnippet._voiceLine; _voicePlayback.Play(); } } else { StartCoroutine(ChangeMenuVisibilityAnimation(false)); } }
public IEnumerator PlaySnippet(DialogueSnippet snippet) { if (snippet.showClock) { yield return(BreakdownPrint.ShowCurrentDay(snippet.time)); } if (snippet.loadScene) { SceneManager.LoadScene(snippet.sceneNumber); } else { TextText.text = ""; TextBox.SetActive(true); yield return(new WaitForSeconds(.2f)); VoiceSource.clip = snippet.audioClip; VoiceSource.Play(); TextText.text = snippet.text; while (VoiceSource.isPlaying) { yield return(null); } TextBox.SetActive(false); TextText.text = ""; } }
private void Cleanup() { _currentlyActiveTextBox.SetActive(false); _currentlyActiveTextBox = null; _currentDialogueList = null; _currentlyActiveText = null; _currentTriggerReceiver = null; _currentTriggerReceiverType = null; _currentDialogueSnippet = null; _voicePlayback = null; _inDialogue = false; }
///<summary>returns false when it hits the end, snippet is given through the out</summary> public bool Advance(out DialogueSnippet snippet) { currentSnippet++; snippet = snippets[Mathf.Clamp(currentSnippet, 0, snippets.Length - 1)]; return(currentSnippet < snippets.Length); }