Ejemplo n.º 1
0
        /// <summary>
        /// Starts displaying a subtitle.
        /// </summary>
        /// <param name='subtitle'>
        /// Subtitle to display.
        /// </param>
        /// <param name='isPCResponseNext'>
        /// Indicates whether the next stage is the player or NPC.
        /// </param>
        /// <param name='isPCAutoResponseNext'>
        /// Indicates whether the next stage is a player auto-response.
        /// </param>
        public void StartSubtitle(Subtitle subtitle, bool isPCResponseMenuNext, bool isPCAutoResponseNext)
        {
            notifyOnFinishSubtitle = true;
            if (subtitle != null)
            {
                if (DialogueDebug.logInfo)
                {
                    Debug.Log(string.Format("{0}: {1} says '{2}'", new System.Object[] { DialogueDebug.Prefix, Tools.GetGameObjectName(subtitle.speakerInfo.transform), subtitle.formattedText.text }));
                }
                NotifyParticipantsOnConversationLine(subtitle);
                if (ShouldShowSubtitle(subtitle))
                {
                    ui.ShowSubtitle(subtitle);

                    // Save this info in case SetContinueMode() sequencer command forces reevaluation:
                    _subtitle             = subtitle;
                    _isPCResponseMenuNext = isPCResponseMenuNext;
                    _isPCAutoResponseNext = isPCAutoResponseNext;

                    SetupContinueButton(subtitle, isPCResponseMenuNext, isPCAutoResponseNext);
                }
                else
                {
                    waitForContinue = false;
                }
                m_sequencer.SetParticipants(subtitle.speakerInfo.transform, subtitle.listenerInfo.transform);
                m_sequencer.entrytag        = subtitle.entrytag;
                m_sequencer.subtitleEndTime = GetDefaultSubtitleDuration(subtitle.formattedText.text);
                if (!string.IsNullOrEmpty(subtitle.sequence) && subtitle.sequence.Contains("{{default}}"))
                {
                    subtitle.sequence = subtitle.sequence.Replace("{{default}}", GetDefaultSequence(subtitle));
                }
                if (subtitle.speakerInfo.isNPC)
                {
                    lastNPCSubtitle = subtitle;
                }
                else
                {
                    lastPCSubtitle = subtitle;
                }
                lastSubtitle = subtitle;
                if (dialogueEntrySpokenHandler != null)
                {
                    dialogueEntrySpokenHandler(subtitle);
                }
                m_sequencer.PlaySequence(string.IsNullOrEmpty(subtitle.sequence) ? GetDefaultSequence(subtitle) : PreprocessSequence(subtitle), settings.subtitleSettings.informSequenceStartAndEnd, false);
            }
            else
            {
                FinishSubtitle();
            }
            IsCancelKeyDown  = IsSubtitleCancelKeyDown;
            CancelledHandler = OnCancelSubtitle;
            if (!string.IsNullOrEmpty(subtitle.formattedText.text))
            {
                _lastModeWasResponseMenu = false;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Displays the player response menu.
        /// </summary>
        /// <param name='subtitle'>
        /// Last subtitle, to display as a reminder of what the player is responding to.
        /// </param>
        /// <param name='responses'>
        /// Responses.
        /// </param>
        public void StartResponses(Subtitle subtitle, Response[] responses)
        {
            PlayResponseMenuSequence(subtitle.responseMenuSequence);
            Subtitle lastSubtitle = ShouldShowLastPCSubtitle()
                ? lastPCSubtitle
                : ShouldShowLastNPCSubtitle()
                    ? lastNPCSubtitle
                    : null;

            NotifyOnResponseMenu(responses);
            ui.ShowResponses(lastSubtitle, responses, settings.GetResponseTimeout());
            IsCancelKeyDown          = IsConversationCancelKeyDown;
            CancelledHandler         = OnCancelResponseMenu;
            _lastModeWasResponseMenu = true;
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Starts displaying a subtitle.
 /// </summary>
 /// <param name='subtitle'>
 /// Subtitle to display.
 /// </param>
 /// <param name='isPCResponseNext'> 
 /// Indicates whether the next stage is the player or NPC.
 /// </param>
 /// <param name='isPCAutoResponseNext'> 
 /// Indicates whether the next stage is a player auto-response.
 /// </param>
 public void StartSubtitle(Subtitle subtitle, bool isPCResponseMenuNext, bool isPCAutoResponseNext)
 {
     if (subtitle != null) {
         if (DialogueDebug.LogInfo)
             Debug.Log (string.Format ("{0}: {1} says '{2}'", new System.Object[] {
                 DialogueDebug.Prefix,
                 Tools.GetGameObjectName (subtitle.speakerInfo.transform),
                 subtitle.formattedText.text
             }));
         NotifyParticipantsOnConversationLine (subtitle);
         if (ShouldShowSubtitle (subtitle)) {
             ui.ShowSubtitle (subtitle);
             waitForContinue = ShouldWaitForContinueButton (subtitle, isPCResponseMenuNext, isPCAutoResponseNext);
             var showContinueButton = ShouldShowContinueButton (isPCResponseMenuNext, isPCAutoResponseNext);
             if (waitForContinue) {
                 if (string.IsNullOrEmpty (subtitle.formattedText.text) && (subtitle.dialogueEntry.id == 0)) {
                     waitForContinue = false;
                 }
             }
             if (!showContinueButton) {
                 if (ui is AbstractDialogueUI)
                     (ui as AbstractDialogueUI).HideContinueButton (subtitle);
             }
         } else {
             waitForContinue = false;
         }
         sequencer.SetParticipants (subtitle.speakerInfo.transform, subtitle.listenerInfo.transform);
         sequencer.entrytag = subtitle.entrytag;
         sequencer.PlaySequence (string.IsNullOrEmpty (subtitle.sequence) ? GetDefaultSequence (subtitle) : PreprocessSequence (subtitle), settings.subtitleSettings.informSequenceStartAndEnd, false);
         if (subtitle.speakerInfo.IsNPC) {
             lastNPCSubtitle = subtitle;
         } else {
             lastPCSubtitle = subtitle;
         }
         lastSubtitle = subtitle;
         if (dialogueEntrySpokenHandler != null)
             dialogueEntrySpokenHandler (subtitle);
     } else {
         FinishSubtitle ();
     }
     IsCancelKeyDown = IsSubtitleCancelKeyDown;
     CancelledHandler = OnCancelSubtitle;
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Displays the player response menu.
 /// </summary>
 /// <param name='subtitle'>
 /// Last subtitle, to display as a reminder of what the player is responding to.
 /// </param>
 /// <param name='responses'>
 /// Responses.
 /// </param>
 public void StartResponses(Subtitle subtitle, Response[] responses)
 {
     PlayResponseMenuSequence (subtitle.responseMenuSequence);
     Subtitle lastSubtitle = ShouldShowLastPCSubtitle ()
         ? lastPCSubtitle
         : ShouldShowLastNPCSubtitle ()
             ? lastNPCSubtitle
             : null;
     NotifyOnResponseMenu (responses);
     ui.ShowResponses (lastSubtitle, responses, settings.inputSettings.responseTimeout);
     IsCancelKeyDown = IsConversationCancelKeyDown;
     CancelledHandler = OnCancelResponseMenu;
 }