/// <summary>
        /// Overrides a DialogueActor's subtitle panel.
        /// </summary>
        /// <param name="dialogueActor">DialogueActor whose panel to override for this conversation.</param>
        /// <param name="subtitlePanelNumber">New subtitle panel number.</param>
        /// <param name="customPanel">Only used if subtitlePanelNumber is Custom.</param>
        public void OverrideActorPanel(DialogueActor dialogueActor, SubtitlePanelNumber subtitlePanelNumber, StandardUISubtitlePanel customPanel = null)
        {
            if (dialogueActor == null)
            {
                return;
            }
            var actor = DialogueManager.masterDatabase.GetActor(dialogueActor.actor);
            StandardUISubtitlePanel panel = null;

            switch (subtitlePanelNumber)
            {
            case SubtitlePanelNumber.Default:
                panel = (actor != null && actor.IsPlayer) ? m_defaultPCPanel : m_defaultNPCPanel;
                break;

            case SubtitlePanelNumber.UseBarkUI:
                break;

            default:
            case SubtitlePanelNumber.Custom:
                panel = GetPanelFromNumber(subtitlePanelNumber, customPanel);
                break;
            }
            if (panel != null)
            {
                m_actorPanelCache[dialogueActor.transform] = panel;
                if (actor != null && m_actorIdOverridePanel.ContainsKey(actor.id))
                {
                    m_actorIdOverridePanel.Remove(actor.id);
                }
            }
        }
예제 #2
0
        public void OpenSubtitlePanelLikeStart(SubtitlePanelNumber subtitlePanelNumber)
        {
            var panel = GetPanelFromNumber(subtitlePanelNumber, null);

            if (panel == null || panel.isOpen)
            {
                return;
            }
            var conversation = DialogueManager.MasterDatabase.GetConversation(DialogueManager.lastConversationStarted);

            if (conversation == null)
            {
                return;
            }

            for (int i = 0; i < conversation.dialogueEntries.Count; i++)
            {
                var           actorID        = conversation.dialogueEntries[i].ActorID;
                var           actor          = DialogueManager.MasterDatabase.GetActor(actorID);
                var           actorTransform = GetActorTransform(actor.Name);
                DialogueActor dialogueActor;
                var           actorPanel = GetActorTransformPanel(actorTransform, actor.IsPlayer ? m_defaultPCPanel : m_defaultNPCPanel, out dialogueActor);
                if (m_actorIdOverridePanel.ContainsKey(actor.id))
                {
                    panel = m_actorIdOverridePanel[actor.id];
                }
                if (actorPanel == panel)
                {
                    var actorPortrait = (dialogueActor != null && dialogueActor.GetPortraitSprite() != null) ? dialogueActor.GetPortraitSprite() : actor.GetPortraitSprite();
                    var actorName     = CharacterInfo.GetLocalizedDisplayNameInDatabase(actor.Name);
                    panel.OpenOnStartConversation(actorPortrait, actorName, dialogueActor);
                    return;
                }
            }
        }
예제 #3
0
 /// <summary>
 /// Changes a dialogue actor's subtitle panel number. If a conversation is active, updates
 /// the dialogue UI.
 /// </summary>
 public void SetSubtitlePanelNumber(SubtitlePanelNumber newSubtitlePanelNumber)
 {
     standardDialogueUISettings.subtitlePanelNumber = newSubtitlePanelNumber;
     if (DialogueManager.isConversationActive && DialogueManager.dialogueUI is StandardDialogueUI)
     {
         (DialogueManager.dialogueUI as StandardDialogueUI).SetActorSubtitlePanelNumber(this, newSubtitlePanelNumber);
     }
 }
예제 #4
0
        /// <summary>
        /// For speakers who do not have DialogueActor components, this method overrides the
        /// actor's default panel.
        /// </summary>
        public void OverrideActorPanel(Actor actor, SubtitlePanelNumber subtitlePanelNumber)
        {
            if (actor == null)
            {
                return;
            }
            var customPanel = actor.IsPlayer ? m_defaultPCPanel : m_defaultNPCPanel;

            m_actorIdOverridePanel[actor.id] = GetPanelFromNumber(subtitlePanelNumber, customPanel);
        }
예제 #5
0
        private StandardUISubtitlePanel GetPanelFromNumber(SubtitlePanelNumber subtitlePanelNumber, StandardUISubtitlePanel customPanel)
        {
            switch (subtitlePanelNumber)
            {
            case SubtitlePanelNumber.Default:
                return(null);

            case SubtitlePanelNumber.Custom:
                return(customPanel);

            case SubtitlePanelNumber.UseBarkUI:
                return(null);

            default:
                var index = PanelNumberUtility.GetSubtitlePanelIndex(subtitlePanelNumber);
                return((0 <= index && index < m_builtinPanels.Count) ? m_builtinPanels[index] : null);
            }
        }
예제 #6
0
 /// <summary>
 /// Changes a dialogue actor's panel for the current conversation. Can still be overridden by [panel=#] tags.
 /// </summary>
 public virtual void SetActorSubtitlePanelNumber(DialogueActor dialogueActor, SubtitlePanelNumber subtitlePanelNumber)
 {
     if (dialogueActor == null)
     {
         return;
     }
     if (m_actorPanelCache.ContainsKey(dialogueActor.transform))
     {
         m_actorPanelCache.Remove(dialogueActor.transform);
     }
     if (!m_dialogueActorCache.ContainsKey(dialogueActor.transform))
     {
         m_dialogueActorCache.Add(dialogueActor.transform, dialogueActor);
     }
     if (m_useBarkUIs.Contains(dialogueActor.transform) && subtitlePanelNumber != SubtitlePanelNumber.UseBarkUI)
     {
         m_useBarkUIs.Remove(dialogueActor.transform);
     }
 }
예제 #7
0
        public static int GetSubtitlePanelIndex(SubtitlePanelNumber subtitlePanelNumber)
        {
            switch (subtitlePanelNumber)
            {
            case SubtitlePanelNumber.Panel0: return(0);

            case SubtitlePanelNumber.Panel1: return(1);

            case SubtitlePanelNumber.Panel2: return(2);

            case SubtitlePanelNumber.Panel3: return(3);

            case SubtitlePanelNumber.Panel4: return(4);

            case SubtitlePanelNumber.Panel5: return(5);

            case SubtitlePanelNumber.Panel6: return(6);

            case SubtitlePanelNumber.Panel7: return(7);

            case SubtitlePanelNumber.Panel8: return(8);

            case SubtitlePanelNumber.Panel9: return(9);

            case SubtitlePanelNumber.Panel10: return(10);

            case SubtitlePanelNumber.Panel11: return(11);

            case SubtitlePanelNumber.Panel12: return(12);

            case SubtitlePanelNumber.Panel13: return(13);

            case SubtitlePanelNumber.Panel14: return(14);

            case SubtitlePanelNumber.Panel15: return(15);

            default: return(-1);
            }
        }
 /// <summary>
 /// Changes a dialogue actor's subtitle panel for the currently active conversation.
 /// </summary>
 public virtual void SetActorSubtitlePanelNumber(DialogueActor dialogueActor, SubtitlePanelNumber subtitlePanelNumber)
 {
     conversationUIElements.standardSubtitleControls.SetActorSubtitlePanelNumber(dialogueActor, subtitlePanelNumber);
 }
예제 #9
0
        public static int GetSubtitlePanelIndex(SubtitlePanelNumber subtitlePanelNumber)
        {
            switch (subtitlePanelNumber)
            {
            case SubtitlePanelNumber.Panel0: return(0);

            case SubtitlePanelNumber.Panel1: return(1);

            case SubtitlePanelNumber.Panel2: return(2);

            case SubtitlePanelNumber.Panel3: return(3);

            case SubtitlePanelNumber.Panel4: return(4);

            case SubtitlePanelNumber.Panel5: return(5);

            case SubtitlePanelNumber.Panel6: return(6);

            case SubtitlePanelNumber.Panel7: return(7);

            case SubtitlePanelNumber.Panel8: return(8);

            case SubtitlePanelNumber.Panel9: return(9);

            case SubtitlePanelNumber.Panel10: return(10);

            case SubtitlePanelNumber.Panel11: return(11);

            case SubtitlePanelNumber.Panel12: return(12);

            case SubtitlePanelNumber.Panel13: return(13);

            case SubtitlePanelNumber.Panel14: return(14);

            case SubtitlePanelNumber.Panel15: return(15);

            case SubtitlePanelNumber.Panel16: return(16);

            case SubtitlePanelNumber.Panel17: return(17);

            case SubtitlePanelNumber.Panel18: return(18);

            case SubtitlePanelNumber.Panel19: return(19);

            case SubtitlePanelNumber.Panel20: return(20);

            case SubtitlePanelNumber.Panel21: return(21);

            case SubtitlePanelNumber.Panel22: return(22);

            case SubtitlePanelNumber.Panel23: return(23);

            case SubtitlePanelNumber.Panel24: return(24);

            case SubtitlePanelNumber.Panel25: return(25);

            case SubtitlePanelNumber.Panel26: return(26);

            case SubtitlePanelNumber.Panel27: return(27);

            case SubtitlePanelNumber.Panel28: return(28);

            case SubtitlePanelNumber.Panel29: return(29);

            case SubtitlePanelNumber.Panel30: return(30);

            case SubtitlePanelNumber.Panel31: return(31);

            default: return(-1);
            }
        }
예제 #10
0
 public override void Reset()
 {
     dialogueActor       = null;
     subtitlePanelNumber = SubtitlePanelNumber.Default;
     customPanel         = null;
 }
예제 #11
0
 public virtual void OverrideActorPanel(Actor actor, SubtitlePanelNumber subtitlePanelNumber)
 {
     conversationUIElements.standardSubtitleControls.OverrideActorPanel(actor, subtitlePanelNumber);
 }