You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

143 lines
3.4 KiB

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<string> 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<Animator>().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) =>
{
//
});
}
}