using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.SceneManagement; public class AccountInitManager : MonoBehaviour { [Header("References")] [SerializeField] private GameObject panelMessages; [SerializeField] private GameObject panelAvatar; [SerializeField] private GameObject panelRoom; [SerializeField] private GameObject panelFinish; [Header("AvatarSelect")] [SerializeField] private GameObject avatar; [SerializeField] private GameObject avatarModel; [SerializeField] private CharacterButton characterButtonPrefab; [SerializeField] private Transform charactersContent; [Header("Messages")] [SerializeField] private TMP_Text messageText; [SerializeField] private Animator animator; [SerializeField] private List messages; [SerializeField] private UnityEvent onEnd; private int messageIndex; [Header("Data")] [SerializeField] private CharactersList charactersList; [SerializeField] private Character character; [SerializeField] private int room; private string Message => messages[messageIndex]; private void Start() { InitMessage(); bool firstChar = true; foreach (Character character in charactersList.Characters) { CharacterButton button = Instantiate(characterButtonPrefab, charactersContent); button.Initialize(character, (Character selectedCharacter) => { SetAvatar(selectedCharacter); }, firstChar); firstChar = false; } } public void SelectRoom(int room) { this.room = room; panelRoom.SetActive(false); NextMessage(); } public void SetAvatar(Character character) { this.character = character; if (avatarModel) Destroy(avatarModel); avatarModel = Instantiate(character.Prefab, avatar.transform); string anim = character.SelectAnimation == "" ? "Waving" : character.SelectAnimation; avatarModel.GetComponent().Play(anim); } public void SelectAvatar() { panelAvatar.SetActive(false); NextMessage(); } private void InitMessage() { if (Message[0] == '/') { Invoke(Message[1..], 0); } else { panelMessages.SetActive(true); string message = Message.Replace("%USERNAME%", "TEST"); messageText.text = message; animator.SetTrigger("InitMessage"); } } public void NextMessage() { messageIndex++; if(messageIndex >= messages.Count) { onEnd.Invoke(); } else InitMessage(); } private void SelectAvatarPanel() { panelMessages.SetActive(false); panelAvatar.SetActive(true); } private void SelectRoomPanel() { panelRoom.SetActive(true); } private void Ready() { panelMessages.SetActive(false); panelFinish.SetActive(true); } public void Play() { panelFinish.SetActive(false); NextMessage(); } public void Finish() { SceneManager.LoadScene("Gameplay"); return; WebRequest.Post(this, "UpdateData", "JSON", (UnityWebRequest request, string data) => { // }); } }