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.
142 lines
3.5 KiB
142 lines
3.5 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%", LocalPlayerData.PlayerName);
|
|
|
|
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()
|
|
{
|
|
LocalPlayerData.AvatarID = character.IDName;
|
|
LocalPlayerData.RoomID = $"Room{room}";
|
|
|
|
WebQuery.SetInit(this, LocalPlayerData.ID, character.IDName, $"Room{room}", (UnityWebRequest request, string data) =>
|
|
{
|
|
SceneManager.LoadScene("Gameplay");
|
|
});
|
|
}
|
|
}
|
|
|