예제 #1
0
    private void SetNarrativeDialogue(SpeakerUIController _activeSpeakerUI, SpeakerUIController _inactiveSpeakerUI, string _text)
    {
        activeSpeakerUI           = _activeSpeakerUI;
        _activeSpeakerUI.Dialogue = _text;
        _activeSpeakerUI.Show();

        if (_activeSpeakerUI.dialoguePanelGO != enabled)
        {
            AM.PlayConsistentOneShot(panelOpenCloseSound, panelOpenCloseVolume);
        }

        _inactiveSpeakerUI.Hide();

        if (_activeSpeakerUI.dialoguePanelGO == enabled)
        {
            AM.PlayConsistentOneShot(panelOpenCloseSound, panelOpenCloseVolume);
        }

        _activeSpeakerUI.Dialogue = "";

        if (typeCoroutine != null)
        {
            StopCoroutine(typeCoroutine);
        }

        typeCoroutine = TypeWritterEffect_N(_text, _activeSpeakerUI);
        StartCoroutine(typeCoroutine);
    }
예제 #2
0
 private IEnumerator EffectTypewriter(string text, SpeakerUIController controller)
 {
     foreach (char character in text.ToCharArray())
     {
         controller.dialogue.text += character;
         // yield return new  WaitForSeconds(0.1f);
         yield return(null);
     }
 }
예제 #3
0
    private void SetDialogue(SpeakerUIController activeSpeakerUI, Character character, string text, Position position, Emote emote)
    {
        activeSpeakerUI.Speaker = character;
        switch (position)
        {
        case Position.LEFT:
            activeSpeakerUI.SetLeft();
            break;

        case Position.RIGHT:
            activeSpeakerUI.SetRight();
            break;

        case Position.CENTER:
            activeSpeakerUI.SetCenter();
            break;

        default:
            activeSpeakerUI.SetLeft();
            break;
        }
        switch (emote)
        {
        case Emote.ANGRY:
            activeSpeakerUI.SetPortrait(character.angryPortrait);
            break;

        case Emote.CONFUSED:
            activeSpeakerUI.SetPortrait(character.confusedPortrait);
            break;

        case Emote.HAPPY:
            activeSpeakerUI.SetPortrait(character.happyPortrait);
            break;

        case Emote.UNHAPPY:
            activeSpeakerUI.SetPortrait(character.unhappyPortrait);
            break;

        case Emote.SAD:
            activeSpeakerUI.SetPortrait(character.sadPortrait);
            break;

        case Emote.SILLY:
            activeSpeakerUI.SetPortrait(character.sillyPortrait);
            break;

        default:
            activeSpeakerUI.SetPortrait(character.portrait);
            break;
        }
        activeSpeakerUI.Show();
        activeSpeakerUI.Dialogue = "";
        StopAllCoroutines();
        StartCoroutine(EffectTypewriter(text, activeSpeakerUI));
    }
예제 #4
0
    private void StartNarrative()
    {
        AM.DampenAllAudio(true);

        if (narTrigger.isDampenMusic)
        {
            AM.DampenBGMusic(true);
        }

        isNarrativeEventRunning = true;

        // Disable both the player input and the enemy movements
        pCon.DisablePlayerController();
        Toolbox.GetInstance().GetLevelManager().PauseAllEnemies();

        AM.PlayConsistentOneShot(speakersMoveInSound, speakersMoveInVolume);

        // Check if this narrative is a monologue, and if so, only enable the speaker on the left side
        if (N.isMonologue)
        {
            speakerUILeft         = speakerLeft.GetComponent <SpeakerUIController>();
            speakerUILeft.Speaker = N.speakerOnTheLeft;
            speakerUILeft.ShowSprite();
        }
        // Else enable both speakers for the conversation
        else
        {
            speakerUILeft         = speakerLeft.GetComponent <SpeakerUIController>();
            speakerUILeft.Speaker = N.speakerOnTheLeft;
            speakerUILeft.ShowSprite();

            speakerUIRight         = speakerRight.GetComponent <SpeakerUIController>();
            speakerUIRight.Speaker = N.speakerOnTheRight;
            speakerUIRight.ShowSprite();
        }

        if (!N.hasTutorial)
        {
            tutorialsRemaining = false;
        }

        if (!pCon.isController)
        {
            Cursor.visible   = true;
            Cursor.lockState = CursorLockMode.None;
        }

        AdvanceNarrative();
    }
예제 #5
0
    private void SetNarrativeMonologueDialogue(SpeakerUIController _activeSpeakerUI, string _text)
    {
        activeSpeakerUI           = _activeSpeakerUI;
        _activeSpeakerUI.Dialogue = _text;
        _activeSpeakerUI.Show();

        _activeSpeakerUI.Dialogue = "";

        if (typeCoroutine != null)
        {
            StopCoroutine(typeCoroutine);
        }

        typeCoroutine = TypeWritterEffect_N(_text, _activeSpeakerUI);
        StartCoroutine(typeCoroutine);
    }
예제 #6
0
    public IEnumerator TypeWritterEffect_N(string _text, SpeakerUIController _speakerUI)
    {
        isTyping = true;

        yield return(new WaitForSeconds(0.3f));

        typingSource.volume = textVolume;
        typingSource.clip   = textSound;
        typingSource.Play();

        foreach (char letter in _text.ToCharArray())
        {
            _speakerUI.Dialogue += letter;
            yield return(new WaitForSeconds(textDelayTime));
        }

        typingSource.Stop();

        isTyping = false;
    }
예제 #7
0
 private void Awake()
 {
     speakerUI = speaker.GetComponent <SpeakerUIController>();
 }