ZoeAppClass/Assets/Jogos/277/Scripts/SubtitleSystem.cs

146 lines
3.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class SubtitleSystem : MonoBehaviour
{
public TextAsset subtitleFile;
private StreamReader reader;
[SerializeField]
public List<Subtitle> subList = new List<Subtitle>();
public SubtitleManager subManager;
public AudioSource aSource;
private float playTime;
int subtitleIndex = 0;
int index;
int count;
public Animator ani_mate;
public GameObject button;
void Start()
{
button.SetActive(false);
Debug.Log(subtitleFile.name.ToString());
subtitleFile = Resources.Load(subtitleFile.name.ToString()) as TextAsset;
if (subtitleFile == null)
{
subManager.showText("Error loading Subtitles File"); Debug.Log("Error Loading Subtitles File");
}
else { subManager.showText("I'm able to set subtitles"); Debug.Log("I'm able to set subtitles"); }
GetText();
subManager.hideText();
}
void Update()
{
if (aSource.isPlaying)
{
if (subtitleIndex < subList.Count)
{
Debug.Log(aSource.time * 1);
var SourceTime = aSource.time * 1;
if (SourceTime >= subList[subtitleIndex].timeStart && SourceTime < subList[subtitleIndex].timeStop)
{
subManager.showText(subList[subtitleIndex].content);
}
if (SourceTime >= subList[subtitleIndex].timeStop)
{
subManager.hideText();
subtitleIndex++;
}
}
else
{
subtitleIndex = 0;
}
}
else
{
subManager.hideText();
button.SetActive(true);
subtitleIndex = 0;
}
}
float ParseTime(string time)
{
float tempTime = 0;
float finalTime = 0;
string[] times = time.Split(":"[0]);
for (int i = 0; i < times.Length; i++)
{
tempTime = float.Parse(times[i]);
if (i == 0)
{
if (tempTime >= 0)
{
tempTime *= 3600;
finalTime += tempTime;
tempTime = 0;
}
}
else if (i == 1)
{
if (tempTime >= 0)
{
tempTime *= 60;
finalTime += tempTime;
tempTime = 0;
}
}
else if (i == 2)
{
if (tempTime >= 0)
{
finalTime += tempTime;
tempTime = 0;
}
}
}
return finalTime;
}
void GetText()
{
reader = new StreamReader(new MemoryStream(subtitleFile.bytes));
while (!reader.EndOfStream)
{
var input = reader.ReadLine();
if (!string.IsNullOrEmpty(input))
{
if (count == 0)
{
Debug.Log(index.ToString());
subList.Add(new Subtitle());
count++;
}
else if (count == 1)
{
string[] time = input.Split("/"[0]);
subList[index].timeStart = ParseTime(time[0]);
subList[index].timeStop = ParseTime(time[1]);
count++;
}
else if (count == 2)
{
subList[index].content = input;
Debug.Log(subList[index].content);
count++;
}
}
else
{
index++;
count = 0;
}
}
}
}