private IEnumerator StartTypingAfterDelay(StandardUISubtitlePanel panel)
    {
        yield return(new WaitForSeconds(DELAY));

        panel.SetTypewriterSpeed(typeWriterSpeed);
        panel.GetTypewriter().Start();
        typeWriterDelay = null;
    }
 public override void Open()
 {
     conversationUIElements.defaultPCSubtitlePanel.gameObject.SetActive(false);
     conversationUIElements.defaultNPCSubtitlePanel.gameObject.SetActive(false);
     conversationUIElements.defaultMenuPanel.gameObject.SetActive(false);
     base.Open();
     UpdateHeadset();
     hasShownSubtitle  = false;
     lastSpeakerId     = -1;
     lastSubtitlePanel = null;
     lastMenuPanel     = null;
 }
    public override void ShowSubtitle(Subtitle subtitle)
    {
        conversationUIElements.defaultPCSubtitlePanel.portraitImage = playerImage;
        var panel = subtitle.speakerInfo.isNPC
                        ? conversationUIElements.defaultNPCSubtitlePanel
                        : conversationUIElements.defaultPCSubtitlePanel;
        var isSameSpeakerSamePanel = panel == lastSubtitlePanel && lastMenuPanel == null;

        if (hasShownSubtitle && !isSameSpeakerSamePanel)
        {
            typeWriterSpeed = panel.GetTypewriterSpeed();
            panel.SetTypewriterSpeed(0);
            typeWriterDelay = StartCoroutine(StartTypingAfterDelay(panel));
        }

        base.ShowSubtitle(subtitle);
        hasShownSubtitle  = true;
        lastSpeakerId     = subtitle.speakerInfo.id;
        lastSubtitlePanel = panel;
        lastMenuPanel     = null;
    }
    public override void ShowResponses(Subtitle subtitle, Response[] responses, float timeout)
    {
        scan = true;
        conversationUIElements.defaultMenuPanel.pcImage = playerImage;
        base.ShowResponses(subtitle, responses, timeout);
        UpdateHeadset();
        if (lastSubtitlePanel)
        {
            lastSubtitlePanel.Close();
        }

        lastSpeakerId     = -1;
        lastSubtitlePanel = null;
        lastMenuPanel     = conversationUIElements.defaultMenuPanel;
        currentButtons    = lastMenuPanel.instantiatedButtons.Select(b =>
                                                                     b.GetComponent <HeartRhythmResponseButton>().fillingButton).ToList();
        foreach (var responseButton in currentButtons)
        {
            responseButton.ResetFill();
            responseButton.Deselect();
        }

        responseRect.verticalNormalizedPosition = 1;
    }