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
|
|
|
}
|
|
|
|
}
|