a

 avatar
unknown
c_cpp
3 years ago
2.8 kB
8
Indexable
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class DialogoBehaviour : MonoBehaviour
{
    AudioSource audio;

    [SerializeField] private GameObject thisGAMEOBJECT;
    [SerializeField] private TextMeshPro componentePRO;

    [Header("Text Options")]
    [SerializeField] private string input;
    [SerializeField] private Color textColor;
    [SerializeField] private TMP_FontAsset textFont;

    [Header("Time parameters")]
    [SerializeField] private float delay;

    List<string> contenidoInput = new List<string>();
    bool destruir = false;
    bool esperandoRespuesta = false;
    bool saltarProcedimiento = false;

    string originalText = "";

    [SerializeField] public PlayerBehaviour Player;

    private void Awake()
    {
        originalText = componentePRO.text;
    }
    void Start()
    {
        audio = GetComponent<AudioSource>();

        string[] alphaInput = originalText.Split("\n");
        for (int i = 0; alphaInput.Length != i; i++)
        {
            contenidoInput.Add(alphaInput[i]);
        }

        Player.characterCanMove = false;

        secuencia();

    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Return) && esperandoRespuesta == false)
        {
            saltarProcedimiento = true;
        }
    }

    void secuencia()
    {
        componentePRO.text = "";

        StartCoroutine(procesarInput(contenidoInput[0]));

    }

    public IEnumerator procesarInput(string contenido)
    {
        char[] charArr = contenido.ToCharArray();

            for (int i = 0; i != charArr.Length; i++)
            {
                componentePRO.text = componentePRO.text + charArr[i].ToString();
                audio.Play();
                yield return new WaitForSeconds(delay);
                if (saltarProcedimiento == true) { componentePRO.text = contenido; i = charArr.Length - 1; }
        }       

        feedbackPlayer();

    }

    void feedbackPlayer()
    {
        bool continuar = false;
        contenidoInput.RemoveAt(0);
        if (contenidoInput.Count == 0) { destruir = true;  StartCoroutine(cerrarComentario()); }
        else { continuar = true;  StartCoroutine(cerrarComentario(continuar));}


    }

    public IEnumerator cerrarComentario(bool continuar = false)
    {
        while (!Input.GetKeyDown(KeyCode.Return))
        {
            esperandoRespuesta = true;
            yield return null;
        }

        esperandoRespuesta = false;
        saltarProcedimiento = false;
        if (destruir==true) { Player.characterCanMove = true ; thisGAMEOBJECT.SetActive(false); }
        if (continuar==true) { secuencia(); }

    }


}
Editor is loading...