Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- public class DialogManager : MonoBehaviour
- {
- public static DialogManager instance;
- // UI-Referenssit
- public GameObject dialogBox;
- public Text nameText;
- public GameObject nameBox;
- public Text dialogText;
- // Dialogin referenssit
- private string[] dialogLines;
- private int currentLine = 0;
- private bool justStarted;
- public float typingSpeed; // Kirjoitus nopeus
- private bool IsCoroutingRunning; // Onko alirutiini käynnissä
- // Start is called before the first frame update
- void Start()
- {
- if (instance == null)
- {
- instance = this;
- }
- }
- // Update is called once per frame
- void Update()
- {
- if (Input.GetButtonUp("Fire2") && !IsCoroutingRunning)
- {
- //siirrytään seuraavalle riville
- currentLine++;
- //onko dialogi jo päättynyt?
- if (currentLine >= dialogLines.Length)
- {
- //dialogi on päättynyt, joten suljetaan dialogi-ikkuna
- dialogBox.SetActive(false);
- //lisäksi informoidaan gamemanageria, että dialogi päättyi (pelihahamo voi taas liikkua)
- GameManager.instance.dialogActive = false;
- }
- else
- {
- //dialogi ei ole vielä päättynyt, joten ensiksi selvitetään mahdollinen keskustelija (jos sellainen on)
- CheckIfName();
- //näytetään dialogiteksti
- //dialogText.text = dialogLines[currentLine];
- StartCoroutine(AutoType(dialogLines, currentLine));
- }
- }
- }
- public void ShowDialog(string[] newLines, bool isPerson)
- {
- // Montako riviä
- dialogLines = newLines;
- // Eka rivi
- currentLine = 0;
- // Onko rivi persoona
- CheckIfName();
- // Dialogin eka rivi
- // dialogText.text = dialogLines[currentLine];
- StartCoroutine(AutoType(dialogLines, currentLine));
- // Avaa dialogi
- dialogBox.SetActive(true);
- // Kirjoitus alkoi
- justStarted = true;
- // Aktivoidaan nimi
- nameBox.SetActive(isPerson);
- // GameManagerille kerrotaan että dialogi on käynnissä.
- GameManager.instance.dialogActive = true;
- }
- void CheckIfName()
- {
- // Alkaako rivi n- GET DOWN MRS. OBAMA
- if (dialogLines[currentLine].StartsWith("n-"))
- {
- // Alkaa
- nameText.text = dialogLines[currentLine].Replace("n-", "");
- currentLine++;
- }
- }
- IEnumerator AutoType(string[] newLInes, int currentLine)
- {
- dialogText.text = "";
- IsCoroutingRunning = true;
- foreach (char letter in newLInes[currentLine].ToCharArray())
- {
- dialogText.text += letter;
- yield return new WaitForSeconds(typingSpeed);
- }
- IsCoroutingRunning = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement