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();
     }
 }
Beispiel #8
0
    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;
     }
 }
Beispiel #19
0
 public override void ShowResponses(Subtitle subtitle, Response[] responses, float timeout)
 {
     conversationUIElements.standardSubtitleControls.UnfocusAll();
     base.ShowResponses(subtitle, responses, timeout);
 }
Beispiel #20
0
 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);
 }
Beispiel #21
0
        /// <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();
        }
Beispiel #22
0
 public override void ShowContinueButton(Subtitle subtitle)
 {
     shouldShowContinueButton = true;
 }
Beispiel #23
0
 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;
     }
 }
Beispiel #27
0
 public override void HideSubtitle(Subtitle subtitle)
 {
     // Don't hide the subtitle.
 }
Beispiel #28
0
 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 + "'");
 }
Beispiel #31
0
 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);
 }
Beispiel #39
0
 public void OnConversationLine(Subtitle subtitle)
 {
     DialogueLua.SetVariable("conversationID", subtitle.dialogueEntry.conversationID);
     DialogueLua.SetVariable("dialogueEntryID", subtitle.dialogueEntry.id);
     if (autoSaveEveryLine) SaveToPlayerPrefs();
 }
Beispiel #40
0
 private static Sequencer PlayBarkSequence(Subtitle subtitle, Transform speaker, Transform listener)
 {
     return(PlayBarkSequence(subtitle.formattedText.text, subtitle.sequence, subtitle.entrytag, speaker, listener));
 }
Beispiel #41
0
 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));
         }
     }
 }
Beispiel #42
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 (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);
 }
Beispiel #44
0
        /// <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();
 }
Beispiel #48
0
 /// <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)
 {
 }