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.
 
 
 
 

70 lines
2.2 KiB

using System.Collections.Generic;
using UnityEngine;
public class CharacterSelectManager : MonoBehaviour
{
[SerializeField] private MainScreensManager mainScreensManager;
[Header("Avatars")]
[SerializeField] private GameObject avatar;
[SerializeField] private GameObject avatarModel;
[SerializeField] private CharacterButton characterButtonPrefab;
[SerializeField] private Transform charactersContent;
private List<CharacterButton> characterButtons = new List<CharacterButton>();
[Header("Data")]
[SerializeField] private CharactersList charactersList;
[SerializeField] private Character characterConfirmed;
[SerializeField] private Character character;
private CharacterButton selectedButton;
private void Start()
{
string charIDName = "char_james"; //GET_NAME
foreach (Character character in charactersList.Characters)
{
CharacterButton button = Instantiate(characterButtonPrefab, charactersContent);
button.Initialize(character, (Character selectedCharacter) =>
{
selectedButton = button;
SetAvatar(selectedCharacter);
}, character.IDName == charIDName);
characterButtons.Add(button);
if (character.IDName == charIDName)
{
characterConfirmed = character;
SetAvatar(character);
}
}
}
private 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 ConfirmAvatar()
{
characterConfirmed = character;
GameManager.Instance.SetCharacter(character);
mainScreensManager.SetGameScreen();
}
public void RevertAvatar()
{
selectedButton?.Deselect();
CharacterButton button = characterButtons.Find(x => x.Character == characterConfirmed);
button?.Select();
selectedButton = button;
}
}