/// <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); } } }
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; } } }
/// <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); } }
/// <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); }
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); } }
/// <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); } }
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); }
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); } }
public override void Reset() { dialogueActor = null; subtitlePanelNumber = SubtitlePanelNumber.Default; customPanel = null; }
public virtual void OverrideActorPanel(Actor actor, SubtitlePanelNumber subtitlePanelNumber) { conversationUIElements.standardSubtitleControls.OverrideActorPanel(actor, subtitlePanelNumber); }