251 lines
6.1 KiB
C#
251 lines
6.1 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using UnityEngine.Video;
|
|
|
|
public class CreateDialog : MonoBehaviour
|
|
{
|
|
int idzoeListenrepeat;
|
|
string route;
|
|
|
|
|
|
public static CreateDialog instance;
|
|
|
|
AudioSource source;
|
|
WriteFile writeFile;
|
|
public int indexlisten = 0;
|
|
// public Image imageDialog;
|
|
List<bool> botoes;
|
|
public Text repeat;
|
|
public RectTransform trGroup;
|
|
public GameObject canvas;
|
|
|
|
bool playingAudio;
|
|
|
|
public List<AudioClip> clips;
|
|
public List<Sprite> sprsCharacters;
|
|
|
|
private void Awake()
|
|
{
|
|
source = gameObject.AddComponent<AudioSource>();
|
|
}
|
|
|
|
public IEnumerator createDialogTextCoroutine()
|
|
{
|
|
yield return StartCoroutine(MontarResources());
|
|
|
|
GameObject phrasetoCreate = Resources.Load<GameObject>("Class/DialogStep/DialogsNew");
|
|
botoes = new List<bool>();
|
|
|
|
exit tutorial = GetComponentInChildren<exit>();
|
|
|
|
while (!tutorial.closed)
|
|
{
|
|
yield return new WaitForEndOfFrame();
|
|
}
|
|
|
|
for(int i = 0; i < ApiClass.listen_repeat.response.Length; i++)
|
|
{
|
|
|
|
GameObject thisObj = Instantiate(phrasetoCreate, trGroup);
|
|
thisObj.transform.localScale = new Vector2(1, 1);
|
|
|
|
ListenRepeat_Option LR = thisObj.GetComponent<ListenRepeat_Option>();
|
|
LR.index = i;
|
|
LR.SetImgCharacter(sprsCharacters[i]);
|
|
|
|
botoes.Add(false);
|
|
|
|
StartCoroutine(IncreaseSizeLR(thisObj.transform));
|
|
|
|
yield return new WaitForSecondsRealtime(0.15f);
|
|
|
|
}
|
|
|
|
SetInformations(idzoeListenrepeat);
|
|
}
|
|
|
|
IEnumerator IncreaseSizeLR(Transform tr)
|
|
{
|
|
float value = 0;
|
|
|
|
while (value < 1)
|
|
{
|
|
value += Time.deltaTime * 5;
|
|
|
|
tr.localScale = new Vector3(value, value, 1);
|
|
|
|
yield return new WaitForEndOfFrame();
|
|
}
|
|
|
|
tr.localScale = new Vector3(1, 1, 1);
|
|
|
|
yield break;
|
|
}
|
|
|
|
public void SetInformations(int id)
|
|
{
|
|
writeFile = new WriteFile();
|
|
idzoeListenrepeat = id;
|
|
StartCoroutine(GetInfoCor());
|
|
|
|
instance = this;
|
|
|
|
if (!ReadingFile.StudentUsers.Contains(ReadingFile.instance.userType))
|
|
{
|
|
CheckEnd(true);
|
|
}
|
|
}
|
|
|
|
IEnumerator GetInfoCor()
|
|
{
|
|
ApiClass api = ApiClass.instance;
|
|
route = api.route;
|
|
|
|
yield return StartCoroutine(MontarResources());
|
|
}
|
|
|
|
IEnumerator MontarResources()
|
|
{
|
|
ApiClass api = ApiClass.instance;
|
|
|
|
clips = new List<AudioClip>();
|
|
|
|
for (int i = 0; i < ApiClass.listen_repeat.response.Length; i++)
|
|
{
|
|
|
|
string nomeAudio = "LR_"+ ApiClass.listen_repeat.response[i].idzoelistenrepeat + "_" + i + ".mp3";
|
|
//string nomeImagem = "LR_" + ApiClass.listen_repeat.response[i].idzoelistenrepeat + "_" + i + ".png";
|
|
yield return StartCoroutine(GetAudioClip("LR/" + nomeAudio));
|
|
}
|
|
|
|
sprsCharacters = new List<Sprite>();
|
|
|
|
for (int i = 0; i < ApiClass.listen_repeat.response.Length; i++)
|
|
{
|
|
string nomeImagem = "LR_" + ApiClass.listen_repeat.response[i].idzoelistenrepeat + "_" + i + ".png";
|
|
|
|
yield return StartCoroutine(DownloadImgCharacter("LR/" + nomeImagem));
|
|
}
|
|
|
|
yield break;
|
|
}
|
|
|
|
IEnumerator DownloadImgCharacter(string path)
|
|
{
|
|
string url = "http://" + ReadingFile.iploc + "/zoeGamesResources/" + path;
|
|
|
|
using(WWW www = new WWW(url))
|
|
{
|
|
yield return www;
|
|
|
|
sprsCharacters.Add(Sprite.Create(www.texture, new Rect(0, 0, www.texture.width,
|
|
www.texture.height), new Vector2(0, 0)));
|
|
}
|
|
|
|
yield break;
|
|
}
|
|
|
|
IEnumerator GetAudioClip(string path)
|
|
{
|
|
string url = "http://" + ReadingFile.iploc + "/zoeGamesResources/" + path;
|
|
Debug.Log(url);
|
|
using (WWW www = new WWW(url))
|
|
{
|
|
yield return www;
|
|
|
|
clips.Add(www.GetAudioClip());
|
|
}
|
|
}
|
|
|
|
public IEnumerator ReproduzirAudio(ListenRepeat_Option ls)
|
|
{
|
|
if (!playingAudio)
|
|
{
|
|
playingAudio = true;
|
|
|
|
ls.gameObject.GetComponent<Animator>().SetBool("listen", true);
|
|
|
|
source.clip = clips[ls.index];
|
|
source.Play();
|
|
|
|
yield return new WaitForSecondsRealtime(clips[ls.index].length);
|
|
|
|
ls.RepeatTxt();
|
|
|
|
yield return new WaitForSecondsRealtime(clips[ls.index].length + 1);
|
|
|
|
playingAudio = false;
|
|
ls.EndListen();
|
|
botoes[ls.index] = true;
|
|
|
|
CheckEnd();
|
|
}
|
|
}
|
|
|
|
void CheckEnd(bool teacher = false)
|
|
{
|
|
bool all = true;
|
|
|
|
foreach (bool item in botoes)
|
|
{
|
|
Debug.Log(item);
|
|
if (!item)
|
|
{
|
|
all = false;
|
|
}
|
|
}
|
|
|
|
if (all || teacher)
|
|
{
|
|
EndStep();
|
|
}
|
|
}
|
|
|
|
void EndStep()
|
|
{
|
|
GeneralScript.instance.LiberarAvanco(true);
|
|
GetComponent<Animator>().SetTrigger("end");
|
|
}
|
|
|
|
IEnumerator ShowRepeat()
|
|
{
|
|
yield return new WaitForSeconds(1f);
|
|
yield return new WaitForSeconds(CreateDialog.instance.source.clip.length - .5f);
|
|
repeat.gameObject.SetActive(true);
|
|
StartCoroutine(HideRepeat());
|
|
}
|
|
|
|
IEnumerator HideRepeat()
|
|
{
|
|
yield return new WaitForSeconds(CreateDialog.instance.source.clip.length - .5f);
|
|
//repeat.SetActive(false);
|
|
repeat.gameObject.SetActive(false);
|
|
|
|
botoes = CreateDialog.instance.botoes;
|
|
bool Finalizou = true;
|
|
for (int i = 0; i < botoes.Count; i++)
|
|
{
|
|
if (!botoes[i])
|
|
Finalizou = false;
|
|
}
|
|
|
|
if (Finalizou)
|
|
{
|
|
GeneralScript general = GeneralScript.instance;
|
|
general.LiberarAvanco(true);
|
|
|
|
GetComponentInParent<ListenRepeat_Control>().CompletedLR();
|
|
}
|
|
}
|
|
|
|
public void ButtonClickShow()
|
|
{
|
|
repeat.GetComponent<Text>();
|
|
StartCoroutine(ShowRepeat());
|
|
}
|
|
|
|
}
|