public override void ShowSubtitle(Subtitle subtitle) { if (subtitle.speakerInfo.IsPlayer) { DirectSubtitle(subtitle, Dialogue.PCSubtitle); } else if (subtitle.speakerInfo.transform == DialogueManager.CurrentConversant) { DirectSubtitle(subtitle, Dialogue.NPCSubtitle); } }
/// <summary> /// Initializes a new ConversationState. /// </summary> /// <param name='subtitle'> /// Subtitle of the current dialogue entry. /// </param> /// <param name='npcResponses'> /// NPC responses. /// </param> /// <param name='pcResponses'> /// PC responses. /// </param> public ConversationState(Subtitle subtitle, Response[] npcResponses, Response[] pcResponses, bool isGroup = false) { this.subtitle = subtitle; this.npcResponses = npcResponses; this.pcResponses = pcResponses; this.IsGroup = isGroup; }
public override void ShowResponses(Subtitle subtitle, Response[] responses, float timeout) { CurrentResponses = responses; foreach (var res in responses) { Debug.Log(res.formattedText.text); } }
public override void ShowSubtitle(Subtitle subtitle) { var barkUI = subtitle.speakerInfo.transform.GetComponentInChildren<UnityUIBarkUI>(); if (barkUI == null) { Debug.Log("Null bark UI: " + subtitle.formattedText.text); } else { barkUI.Bark(subtitle); } HideResponses(); }
/// <summary> /// When speaking a line, update the appropriate portrait image with the /// speaker's animated portrait animator controller. /// </summary> /// <param name="subtitle">Subtitle.</param> public void OnConversationLine(Subtitle subtitle) { if (!FindDialogueUI()) return; if (subtitle.speakerInfo.characterType == CharacterType.NPC) { SetAnimatorController(dialogueUI.dialogue.npcSubtitle.portraitImage, subtitle.speakerInfo.transform, ref npcPortraitAnimator); } else { SetAnimatorController(dialogueUI.dialogue.pcSubtitle.portraitImage, subtitle.speakerInfo.transform, ref pcPortraitAnimator); } lastSpeaker = subtitle.speakerInfo.transform; }
/// <summary> /// Sets the subtitle. /// </summary> /// <param name='subtitle'> /// Subtitle. /// </param> public override void SetSubtitle(Subtitle subtitle) { if ((subtitle != null) && !string.IsNullOrEmpty(subtitle.formattedText.text)) { if (portraitImage != null) portraitImage.sprite = CreateSprite(subtitle.GetSpeakerPortrait()); if (portraitName != null) portraitName.text = subtitle.speakerInfo.Name; if (line != null) SetFormattedText(line, subtitle.formattedText); Show(); } else { if ((line != null) && (subtitle != null)) SetFormattedText(line, subtitle.formattedText); Hide(); } }
/// <summary> /// Shows the subtitle reminder and response buttons. /// </summary> /// <param name='subtitle'> /// Subtitle reminder. /// </param> /// <param name='responses'> /// Responses. /// </param> /// <param name='target'> /// Target that will receive OnClick events from the buttons. /// </param> public void ShowResponses(Subtitle subtitle, Response[] responses, Transform target) { if ((responses != null) && (responses.Length > 0)) { SubtitleReminder.ShowSubtitle(subtitle); ClearResponseButtons(); SetResponseButtons(responses, target); Show(); } else { Hide(); } }
public void HideSubtitle(Subtitle subtitle) { if ( subtitle.speakerInfo.Name.Equals("Pelaaja")){ pcSub.GetComponent<Text>().text = ""; } else { npcSub.GetComponent<Text>().text = ""; } // Add your code here to hide a subtitle. }
/// <summary> /// Shows the subtitle controls. /// </summary> /// <param name='subtitle'> /// Subtitle. /// </param> public void ShowSubtitle(Subtitle subtitle) { if ((subtitle != null) && !string.IsNullOrEmpty(subtitle.formattedText.text)) { currentSubtitle = subtitle; SetSubtitle(subtitle); Show(); } else { currentSubtitle = null; ClearSubtitle(); Hide(); } }
/// <summary> /// Gets the default sequence for a subtitle. /// </summary> /// <returns> /// The default sequence. /// </returns> /// <param name='subtitle'> /// Subtitle. /// </param> public string GetDefaultSequence(Subtitle subtitle) { if ((subtitle.speakerInfo.characterType == CharacterType.PC) && !settings.subtitleSettings.showPCSubtitlesDuringLine) { return null; } else { float duration = GetDefaultSubtitleDuration (subtitle.formattedText.text); if (string.IsNullOrEmpty (settings.cameraSettings.defaultSequence)) { return string.Format ("Delay({0})", new System.Object[] { duration }); } else { return settings.cameraSettings.defaultSequence.Replace ("{{end}}", duration.ToString ()); } } }
void OnConversationLine(Subtitle subtitle) { SecondsBeforeWarning = DialogueLua.GetVariable("SecondsBeforeWarning").AsFloat; SecondsBeforeConversationEnd = DialogueLua.GetVariable("SecondsBeforeConversationEnd").AsFloat; if (DialogueLua.GetVariable("IsTimeSensitive").AsBool == true) { StopCoroutine("Timer"); StartCoroutine("Timer"); } else { StopCoroutine("Timer"); } int count = 0; if (DroppedConversationsIDs.Count > 0) { if (DroppedConversationsIDs.Contains(subtitle.dialogueEntry.conversationID)) { foreach (var dialogue in DroppedDialogueIDs) { if (subtitle.dialogueEntry.id == dialogue) { var lastConversation = DialogueManager.MasterDatabase.GetConversation(DialogueManager.LastConversationStarted); foreach (var entry in lastConversation.dialogueEntries) { if (string.Equals(entry.DialogueText, "Continue Conversations")) { continueEntry = entry; break; } } Debug.Log(subtitle.dialogueEntry.id); continueEntry.outgoingLinks.Clear(); DroppedDialogueIDs.RemoveAt(count); DroppedConversationsIDs.RemoveAt(count); break; } count++; } } } if (DroppedConversationsIDs.Count > 0) { for (count = 0; count < DroppedConversationsIDs.Count; count++) { Debug.Log ("ConvoID: " + DroppedConversationsIDs [count] + " DialogueID: " + DroppedDialogueIDs [count] + " Index: " + count); } } }
public override void ShowSubtitle(Subtitle subtitle) { dialogue.npcSubtitle.line.color = originalColour; dialogue.npcSubtitle.originalColor = originalColour; //dialogue.npcSubtitle.portraitName.color = originalColour; if (subtitle.formattedText != null && subtitle.formattedText.emphases.Length > 0) { subtitle.formattedText.emphases [0].color = originalColour; } foreach (var actorStyle in actorStyles) { if (string.Equals (subtitle.speakerInfo.Name, actorStyle.actorName)) { dialogue.npcSubtitle.line.color = actorStyle.textColour; dialogue.npcSubtitle.originalColor = actorStyle.textColour; //dialogue.npcSubtitle.portraitName.color = actorStyle.textColour; if (subtitle.formattedText != null && subtitle.formattedText.emphases.Length > 0) { subtitle.formattedText.emphases [0].color = actorStyle.textColour; } } } base.ShowSubtitle (subtitle); }
public override void ShowSubtitle(Subtitle subtitle) { HideResponses (); base.ShowSubtitle (subtitle); CheckSubtitleAutoFocus (subtitle); }
public void CheckSubtitleAutoFocus(Subtitle subtitle) { if (autoFocus) { if (subtitle.speakerInfo.IsPlayer) { dialogue.pcSubtitle.AutoFocus (); } else { dialogue.npcSubtitle.AutoFocus (); } } }
public void ShowSubtitle(Subtitle subtitle) { // Use the bark UI to show the subtitle, don't tell it to skip // the sequence since the ConversationView will already play it: StartCoroutine(BarkController.Bark(subtitle, true)); }
public void HideSubtitle(Subtitle subtitle) { }
public void OnConversationLine(Subtitle subtitle) { if (subtitle == null | subtitle.formattedText == null | string.IsNullOrEmpty(subtitle.formattedText.text)) return; string speakerName = (subtitle.speakerInfo != null && subtitle.speakerInfo.transform != null) ? subtitle.speakerInfo.transform.name : "(null speaker)"; Debug.Log(string.Format("<color={0}>{1}: {2}</color>", GetActorColor(subtitle), speakerName, subtitle.formattedText.text)); }
private bool ShouldShowSubtitle(Subtitle subtitle) { if ((subtitle != null) && (settings != null) && (settings.subtitleSettings != null)) { return ((subtitle.speakerInfo.characterType == CharacterType.NPC) && settings.subtitleSettings.showNPCSubtitlesDuringLine) || ((subtitle.speakerInfo.characterType == CharacterType.PC) && settings.subtitleSettings.showPCSubtitlesDuringLine); } else { return false; } }
public override void ShowResponses(Subtitle subtitle, Response[] responses, float timeout) { conversationUIElements.standardSubtitleControls.UnfocusAll(); base.ShowResponses(subtitle, responses, timeout); }
public float GetDelayDuration(Subtitle subtitle) { return((basedOnTextLength ? Mathf.Max(DialogueManager.DisplaySettings.subtitleSettings.minSubtitleSeconds, subtitle.formattedText.text.Length / Mathf.Max(1, DialogueManager.DisplaySettings.subtitleSettings.subtitleCharsPerSecond)) : 0) + additionalSeconds); }
/// <summary> /// When loading a game, load the dialogue entry records and resume the conversation. /// </summary> public virtual void OnApplyPersistentData() { if (DontLoadInThisScene()) { Debug.Log("OnApplyPersistentData Dont Load in this scene: " + SceneManager.GetActiveScene().buildIndex); } if (DontLoadInThisScene()) { return; } records.Clear(); if (!DialogueLua.DoesVariableExist(currentDialogueEntryRecords)) { return; } StopAllCoroutines(); // Load dialogue entry records: var s = DialogueLua.GetVariable(currentDialogueEntryRecords).AsString; if (Debug.isDebugBuild) { Debug.Log("TextlineDialogueUI.OnApplyPersistentData: Restoring current conversation from " + currentDialogueEntryRecords + ": " + s); } var ints = s.Split(';'); var numRecords = Tools.StringToInt(ints[0]); for (int i = 0; i < numRecords; i++) { var conversationID = Tools.StringToInt(ints[1 + i * 2]); var entryID = Tools.StringToInt(ints[2 + i * 2]); records.Add(new DialogueEntryRecord(conversationID, entryID)); } // If we have records, resume the conversation: if (records.Count == 0) { return; } var lastRecord = records[records.Count - 1]; if (lastRecord.conversationID >= 0 && lastRecord.entryID > 0) { UnityEngine.UI.Button lastContinueButton = null; try { // Resume conversation: //if (dontRepeatLastSequence) isLoadingGame = true; isLoadingGame = true; var conversation = DialogueManager.MasterDatabase.GetConversation(lastRecord.conversationID); var actorName = DialogueLua.GetVariable(currentConversationActor).AsString; var conversantName = DialogueLua.GetVariable(currentConversationConversant).AsString; var actor = GameObject.Find(actorName); var conversant = GameObject.Find(conversantName); var actorTransform = (actor != null) ? actor.transform : null; var conversantTransform = (conversant != null) ? conversant.transform : null; if (Debug.isDebugBuild) { Debug.Log("Resuming '" + conversation.Title + "' at entry " + lastRecord.entryID); } DialogueManager.StopConversation(); var lastEntry = DialogueManager.MasterDatabase.GetDialogueEntry(lastRecord.conversationID, lastRecord.entryID); var originalSequence = lastEntry.Sequence; // Handle last entry's sequence differently if end entry. npcPreDelaySettings.CopyTo(npcPreDelaySettingsCopy); pcPreDelaySettings.CopyTo(pcPreDelaySettingsCopy); npcPreDelaySettings.basedOnTextLength = false; npcPreDelaySettings.additionalSeconds = 0; pcPreDelaySettings.basedOnTextLength = false; pcPreDelaySettings.additionalSeconds = 0; var isEndEntry = lastEntry.Sequence.Contains("WaitForMessage(Forever)") || lastEntry.outgoingLinks.Count == 0; if (isEndEntry) { if (!lastEntry.Sequence.Contains("WaitForMessage(Forever)")) { lastEntry.Sequence = "WaitForMessage(Forever); " + lastEntry.Sequence; } } else if (dontRepeatLastSequence) { lastEntry.Sequence = "None()"; } else { lastEntry.Sequence = "Delay(0.1)"; } skipNextRecord = true; isInPreDelay = false; DialogueManager.StartConversation(conversation.Title, actorTransform, conversantTransform, lastRecord.entryID); lastContinueButton = continueButton; lastEntry.Sequence = originalSequence; npcPreDelaySettingsCopy.CopyTo(npcPreDelaySettings); pcPreDelaySettingsCopy.CopyTo(pcPreDelaySettings); // Populate UI with previous records: var lastInstance = (instantiatedMessages.Count > 0) ? instantiatedMessages[instantiatedMessages.Count - 1] : null; instantiatedMessages.Remove(lastInstance); DestroyInstantiatedMessages(); for (int i = 0; i < records.Count - 1; i++) { var entry = DialogueManager.MasterDatabase.GetDialogueEntry(records[i].conversationID, records[i].entryID); var speakerInfo = DialogueManager.ConversationModel.GetCharacterInfo(entry.ActorID); var listenerInfo = DialogueManager.ConversationModel.GetCharacterInfo(entry.ConversantID); var formattedText = FormattedText.Parse(entry.currentDialogueText, DialogueManager.MasterDatabase.emphasisSettings); var subtitle = new Subtitle(speakerInfo, listenerInfo, formattedText, "None()", entry.ResponseMenuSequence, entry); AddMessage(subtitle); } if (lastInstance != null) { instantiatedMessages.Add(lastInstance); lastInstance.transform.SetAsLastSibling(); } } finally { isLoadingGame = false; scrollRect.verticalNormalizedPosition = 0; continueButton = lastContinueButton; if (shouldShowContinueButton && lastContinueButton != null) { lastContinueButton.gameObject.SetActive(true); } } } ScrollToBottom(); }
public override void ShowContinueButton(Subtitle subtitle) { shouldShowContinueButton = true; }
protected virtual StandardUISubtitlePanel GetTemplate(Subtitle subtitle) { return(subtitle.speakerInfo.IsNPC ? conversationUIElements.defaultNPCSubtitlePanel : conversationUIElements.defaultPCSubtitlePanel); }
public abstract void Bark(Subtitle subtitle);
/// <summary> /// Hides the subtitle based on its character type (PC or NPC). /// </summary> /// <param name='subtitle'> /// Subtitle to hide. /// </param> public virtual void HideSubtitle(Subtitle subtitle) { SetSubtitle(subtitle, false); }
private bool ShouldWaitForContinueButton(Subtitle subtitle, bool isPCResponseMenuNext, bool isPCAutoResponseNext) { switch (settings.subtitleSettings.continueButton) { case DisplaySettings.SubtitleSettings.ContinueButtonMode.Always: return true; case DisplaySettings.SubtitleSettings.ContinueButtonMode.Never: return false; case DisplaySettings.SubtitleSettings.ContinueButtonMode.OptionalBeforeResponseMenu: return !isPCResponseMenuNext; case DisplaySettings.SubtitleSettings.ContinueButtonMode.NotBeforeResponseMenu: return !isPCResponseMenuNext; case DisplaySettings.SubtitleSettings.ContinueButtonMode.OptionalBeforePC: return !(isPCResponseMenuNext || isPCAutoResponseNext); case DisplaySettings.SubtitleSettings.ContinueButtonMode.NotBeforePC: return !(isPCResponseMenuNext || isPCAutoResponseNext); default: return false; } }
public override void HideSubtitle(Subtitle subtitle) { // Don't hide the subtitle. }
public override void HideSubtitle(Subtitle subtitle) { conversationUIElements.standardSubtitleControls.HideSubtitle(subtitle); }
public void ShowResponses(Subtitle subtitle, Response[] responses, float timeout) { if (responses.Length > 0) { SelectedResponseHandler(this, new SelectedResponseEventArgs(responses[0])); } }
private string GetSubtitleTextSummary(Subtitle subtitle) { return((subtitle == null) ? "(empty subtitle)" : "[" + subtitle.speakerInfo.Name + "] '" + subtitle.formattedText.text + "'"); }
public override void ShowSubtitle(Subtitle subtitle) { conversationUIElements.standardMenuControls.Close(); conversationUIElements.standardSubtitleControls.ShowSubtitle(subtitle); }
} // Unused. Work is done by StandardUISubtitlePanel. public override void SetSubtitle(Subtitle subtitle) { } // Unused. Work is done by StandardUISubtitlePanel.
/// <summary> /// Sets the subtitle controls' contents. /// </summary> /// <param name='subtitle'> /// Subtitle. /// </param> public abstract void SetSubtitle(Subtitle subtitle);
/// <summary> /// Barks a subtitle. In this implementation, this method doesn't actually do anything. /// </summary> /// <param name='subtitle'> /// Subtitle to bark. /// </param> public void Bark(Subtitle subtitle) { }
/// <summary> /// Sets the subtitle. /// </summary> /// <param name='subtitle'> /// Subtitle. /// </param> public override void SetSubtitle(Subtitle subtitle) { if ((subtitle != null) && !string.IsNullOrEmpty(subtitle.formattedText.text)) { if (portraitImage != null) portraitImage.sprite = UITools.CreateSprite(subtitle.GetSpeakerPortrait()); if (portraitName != null) portraitName.text = subtitle.speakerInfo.Name; if (line != null) SetFormattedText(line, subtitle.formattedText); Show(); if (alwaysVisible && line != null) { var typewriter = line.GetComponent<UnityUITypewriterEffect>(); if (typewriter != null) typewriter.OnEnable(); } } else { if ((line != null) && (subtitle != null)) SetFormattedText(line, subtitle.formattedText); Hide(); } }
public override void ShowResponses(Subtitle subtitle, Response[] responses, float timeout) { base.ShowResponses(subtitle, responses, timeout); if (autoFocus) dialogue.responseMenu.AutoFocus(); }
public override void ShowResponses(Subtitle subtitle, Response[] responses, float timeout) { base.ShowResponses (subtitle, responses, timeout); CheckResponseMenuAutoFocus (); }
/// <summary> /// Shows the subtitle (NPC or PC) based on the character type. /// </summary> /// <param name='subtitle'> /// Subtitle to show. /// </param> public virtual void ShowSubtitle(Subtitle subtitle) { SetSubtitle(subtitle, true); }
public void OnConversationLine(Subtitle subtitle) { DialogueLua.SetVariable("conversationID", subtitle.dialogueEntry.conversationID); DialogueLua.SetVariable("dialogueEntryID", subtitle.dialogueEntry.id); if (autoSaveEveryLine) SaveToPlayerPrefs(); }
private static Sequencer PlayBarkSequence(Subtitle subtitle, Transform speaker, Transform listener) { return(PlayBarkSequence(subtitle.formattedText.text, subtitle.sequence, subtitle.entrytag, speaker, listener)); }
private void BarkNextCachedLine(Transform speaker, Transform listener) { if ((barkUI != null) && (cachedState != null) && cachedState.HasAnyResponses) { Response[] responses = cachedState.HasNPCResponse ? cachedState.npcResponses : cachedState.pcResponses; int index = (barkHistory ?? new BarkHistory(BarkOrder.Random)).GetNextIndex(responses.Length); DialogueEntry barkEntry = responses[index].destinationEntry; if ((barkEntry == null) && DialogueDebug.LogWarnings) Debug.Log(string.Format("{0}: Bark (speaker={1}, listener={2}): '{3}' bark entry is null", new System.Object[] { DialogueDebug.Prefix, speaker, listener, conversation }), speaker); if (barkEntry != null) { Subtitle subtitle = new Subtitle(cachedState.subtitle.listenerInfo, cachedState.subtitle.speakerInfo, new FormattedText(barkEntry.DialogueText), string.Empty, string.Empty, barkEntry); if (DialogueDebug.LogInfo) Debug.Log(string.Format("{0}: Bark (speaker={1}, listener={2}): '{3}'", new System.Object[] { DialogueDebug.Prefix, speaker, listener, subtitle.formattedText.text }), speaker); StartCoroutine(BarkController.Bark(subtitle, speaker, listener, barkUI)); } } }
/// <summary> /// Attempts to make a character bark. This is a coroutine; you must start it using /// StartCoroutine() or Unity will hang. Shows a specific subtitle and plays the sequence, /// but does not send OnBarkStart/OnBarkEnd messages to the participants. /// </summary> /// <param name='subtitle'> /// Subtitle to bark. /// </param> /// <param name='skipSequence'> /// If `true`, don't play the sequence associated with the subtitle. /// </param> public static IEnumerator Bark(Subtitle subtitle, bool skipSequence = false) { if (CheckDontBarkDuringConversation()) { yield break; } if ((subtitle == null) || (subtitle.speakerInfo == null)) { yield break; } Transform speaker = subtitle.speakerInfo.transform; Transform listener = (subtitle.listenerInfo != null) ? subtitle.listenerInfo.transform : null; var priority = GetEntryBarkPriority(subtitle.dialogueEntry); if (priority < GetSpeakerCurrentBarkPriority(speaker)) { if (DialogueDebug.logInfo) { Debug.Log(string.Format("{0}: Bark (speaker={1}, listener={2}): '{3}' currently barking a higher priority bark", new System.Object[] { DialogueDebug.Prefix, speaker, listener, subtitle.formattedText.text }), speaker); } yield break; } SetSpeakerCurrentBarkPriority(speaker, priority); InformParticipants(DialogueSystemMessages.OnBarkStart, speaker, listener); InformParticipantsLine(DialogueSystemMessages.OnBarkLine, speaker, subtitle); IBarkUI barkUI = DialogueActor.GetBarkUI(speaker); // speaker.GetComponentInChildren(typeof(IBarkUI)) as IBarkUI; if ((barkUI == null) && DialogueDebug.logWarnings) { Debug.LogWarning(string.Format("{0}: Bark (speaker={1}, listener={2}): '{3}' speaker has no bark UI", new System.Object[] { DialogueDebug.Prefix, speaker, listener, subtitle.formattedText.text }), speaker); } if (((barkUI == null) || !(barkUI as MonoBehaviour).enabled) && DialogueDebug.logWarnings) { Debug.LogWarning(string.Format("{0}: Bark (speaker={1}, listener={2}): '{3}' bark UI is null or disabled", new System.Object[] { DialogueDebug.Prefix, speaker, listener, subtitle.formattedText.text }), speaker); } // Show the bark subtitle: if ((barkUI != null) && (barkUI as MonoBehaviour).enabled) { barkUI.Bark(subtitle); } // Start the sequence: Sequencer sequencer = null; if (!(skipSequence || string.IsNullOrEmpty(subtitle.sequence))) { sequencer = PlayBarkSequence(subtitle, speaker, listener); } LastSequencer = sequencer; // Wait until the sequence and subtitle are done: while (((sequencer != null) && sequencer.isPlaying) || ((barkUI != null) && barkUI.isPlaying)) { yield return(null); } if (sequencer != null) { GameObject.Destroy(sequencer); } InformParticipants(DialogueSystemMessages.OnBarkEnd, speaker, listener); SetSpeakerCurrentBarkPriority(speaker, 0); }
/// <summary> /// Attempts to make a character bark. This is a coroutine; you must start it using /// StartCoroutine() or Unity will hang. Shows a specific subtitle and plays the sequence, /// but does not send OnBarkStart/OnBarkEnd messages to the participants. /// </summary> /// <param name='subtitle'> /// Subtitle to bark. /// </param> /// <param name='skipSequence'> /// If `true`, don't play the sequence associated with the subtitle. /// </param> public static IEnumerator Bark(Subtitle subtitle, bool skipSequence = false) { if ((subtitle == null) || (subtitle.speakerInfo == null)) yield break; Transform speaker = subtitle.speakerInfo.transform; Transform listener = (subtitle.listenerInfo != null) ? subtitle.listenerInfo.transform : null; IBarkUI barkUI = speaker.GetComponentInChildren(typeof(IBarkUI)) as IBarkUI; if ((barkUI == null) && DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Bark (speaker={1}, listener={2}): '{3}' speaker has no bark UI", new System.Object[] { DialogueDebug.Prefix, speaker, listener, subtitle.formattedText.text }), speaker); if (((barkUI == null) || !(barkUI as MonoBehaviour).enabled) && DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Bark (speaker={1}, listener={2}): '{3}' bark UI is null or disabled", new System.Object[] { DialogueDebug.Prefix, speaker, listener, subtitle.formattedText.text }), speaker); if ((barkUI != null) && (barkUI as MonoBehaviour).enabled) { barkUI.Bark(subtitle); } Sequencer sequencer = null; if (!(skipSequence || string.IsNullOrEmpty(subtitle.sequence))) { sequencer = DialogueManager.PlaySequence(subtitle.sequence, speaker, listener, false, false); sequencer.entrytag = subtitle.entrytag; } LastSequencer = sequencer; while (((sequencer != null) && sequencer.IsPlaying) || ((barkUI != null) && barkUI.IsPlaying)) { yield return null; } if (sequencer != null) GameObject.Destroy(sequencer); }
/// <summary> /// Broadcasts a message to the participants in a bark. Used to send the OnBarkStart and /// OnBarkEnd messages to the speaker and listener. Also sent to Dialogue Manager. /// </summary> /// <param name='message'> /// Message (i.e., OnBarkStart or OnBarkEnd). /// </param> /// <param name='speaker'> /// Speaker. /// </param> /// <param name='listener'> /// Listener. /// </param> private static void InformParticipantsLine(string message, Transform speaker, Subtitle subtitle) { if (speaker != null) { speaker.BroadcastMessage(message, subtitle, SendMessageOptions.DontRequireReceiver); } var dialogueManagerTransform = DialogueManager.instance.transform; if (dialogueManagerTransform != speaker) { DialogueManager.instance.BroadcastMessage(message, subtitle, SendMessageOptions.DontRequireReceiver); } }
private string GetActorColor(Subtitle subtitle) { if (subtitle == null | subtitle.speakerInfo == null) return "white"; return Tools.ToWebColor(subtitle.speakerInfo.IsPlayer ? playerColor : npcColor); }
private void NotifyParticipantsOnConversationLineEnd(Subtitle subtitle) { NotifyParticipants(DialogueSystemMessages.OnConversationLineEnd, subtitle); }
public override void ShowSubtitle(Subtitle subtitle) { base.ShowSubtitle(subtitle); if (autoFocus) { if (subtitle.speakerInfo.IsPlayer) { dialogue.pcSubtitle.AutoFocus(); } else { dialogue.npcSubtitle.AutoFocus(); } } HideResponses(); }
/// <summary> /// Barks a subtitle. In this implementation, this method doesn't actually do anything. /// </summary> /// <param name='subtitle'> /// Subtitle to bark. /// </param> public void Bark(Subtitle subtitle) { }