steampunk-quest/Assets/scripts/dialogSystem/AudioVisualizer.cs

98 lines
3.2 KiB
C#
Raw Normal View History

2022-01-19 19:22:21 +03:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AudioVisualizer : MonoBehaviour
{
public class AudioVisualizerData{
public string _text;
public Roles _role;
public AudioVisualizerData(string text, Roles role) {
_text = text;
_role = role;
}
}
2022-01-29 11:50:50 +03:00
private GameObject _avatar;
[SerializeField]
private GameObject _captainAvatar;
[SerializeField]
private GameObject _pilotAvatar;
[SerializeField]
private GameObject _voiceAssistantAvatar;
2022-01-19 19:22:21 +03:00
private AudioVisualizerData data;
[SerializeField]
private Canvas _canvasOverlay;
private AudioVisualizerData _visualizerData;
void Start() {
if (GameObject.FindGameObjectsWithTag("dialog_canvas").Length == 0) {
Instantiate(_canvasOverlay, Vector3.zero, Quaternion.identity);
}
}
2022-01-29 11:50:50 +03:00
IEnumerator setText() {
2022-01-19 19:22:21 +03:00
Text content = GameObject.FindGameObjectWithTag("dialog_content").GetComponent<Text>();
2022-01-29 11:50:50 +03:00
content.text = "";
foreach(char i in _visualizerData._text) {
content.text += i;
yield return new WaitForSeconds(0.05f);
}
}
string RoleToString(Roles role) {
string res = "";
switch (role) {
case Roles.CAPTAIN:
res = "Капитан";
break;
case Roles.PILOT:
res = "Пилот";
break;
case Roles.VOICE_ASSISTANT:
res = "Голосовой помощник";
break;
case Roles.CAPTAIN_IN_IMAGINATION:
res = "Капитан (воспоминание)";
break;
case Roles.VOICE_ASSISTANT_IN_IMAGINATION:
res = "Elizabeth (воспоминание)";
break;
}
return res;
}
IEnumerator setHeader() {
2022-01-19 19:22:21 +03:00
Text name = GameObject.FindGameObjectWithTag("dialog_name").GetComponent<Text>();
2022-01-29 11:50:50 +03:00
name.text = "";
string nameText = RoleToString(_visualizerData._role);
foreach(char i in nameText) {
name.text += i;
yield return new WaitForSeconds(0.05f);
}
}
public void changeAudioVisualizerData(AudioVisualizerData visualizerData) {
Canvas canvas = Object.FindObjectOfType<Canvas>();
Text content = GameObject.FindGameObjectWithTag("dialog_content").GetComponent<Text>();
_visualizerData = visualizerData;
StartCoroutine("setText");
StartCoroutine("setHeader");
Destroy(_avatar);
switch(visualizerData._role) {
2022-01-19 19:22:21 +03:00
case Roles.CAPTAIN:
2022-01-29 11:50:50 +03:00
_avatar = Instantiate(_captainAvatar, _captainAvatar.transform.position, Quaternion.identity);
2022-01-19 19:22:21 +03:00
break;
case Roles.PILOT:
2022-01-29 11:50:50 +03:00
_avatar = Instantiate(_pilotAvatar, _pilotAvatar.transform.position, Quaternion.identity);
2022-01-19 19:22:21 +03:00
break;
case Roles.VOICE_ASSISTANT:
2022-01-29 11:50:50 +03:00
_avatar = Instantiate(_voiceAssistantAvatar, _voiceAssistantAvatar.transform.position, Quaternion.identity);
break;
case Roles.CAPTAIN_IN_IMAGINATION:
_avatar = Instantiate(_captainAvatar, _captainAvatar.transform.position, Quaternion.identity);
break;
case Roles.VOICE_ASSISTANT_IN_IMAGINATION:
_avatar = Instantiate(_voiceAssistantAvatar, _voiceAssistantAvatar.transform.position, Quaternion.identity);
2022-01-19 19:22:21 +03:00
break;
}
2022-01-29 11:50:50 +03:00
_avatar.transform.SetParent(canvas.transform, false);
2022-01-19 19:22:21 +03:00
}
}