UPF/Assets/Game/Scripts/TutorialScreen.cs
2022-10-17 04:25:47 +05:30

74 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
public class TutorialScreen : MonoBehaviour
{
public Transform messageParent;
public Button btn_next;
public Button[] additional_next_buttons;
public int delayBeforeAppear;
public bool hideNextButtonOnStart=true;
public UnityEvent OnNextClicked;
Dictionary<TMP_Text, string> messages;
void Awake(){
btn_next.onClick.AddListener(OnNextButton);
foreach(Button btn in additional_next_buttons){
btn.onClick.AddListener(OnNextButton);
}
}
public void Show(){
gameObject.SetActive(true);
ShowTexts();
}
async void ShowTexts(){
if(hideNextButtonOnStart){btn_next.gameObject.SetActive(false);}
int typewriteDelay = 0;
if(messages == null){
messages = new Dictionary<TMP_Text, string>();
TMP_Text[] texts = messageParent.GetComponentsInChildren<TMP_Text>();
foreach(TMP_Text text in texts){
messages.Add(text, text.text);
text.text = "";
}
}
foreach(KeyValuePair<TMP_Text, string> message in messages){
message.Key.text="";
Debug.Log(message.Value);
for(int i=0; i < message.Value.Length; i++){
message.Key.text+=message.Value.ToCharArray()[i];
if(typewriteDelay< 4){
typewriteDelay++;
}else{
AudioManager.instnace.TypeWriter();
typewriteDelay=0;
}
await Task.Delay(20);
}
await Task.Delay(500);
}
btn_next.gameObject.SetActive(true);
}
public void Hide(){
gameObject.SetActive(false);
}
public void OnNextButton(){
OnNextClicked.Invoke();
Debug.Log("Next button clicked");
TutorialManager.NextClicked();
AudioManager.instnace.UIClick();
}
}