using System; using TMPro; using UnityEngine; using UnityEngine.UI; public class CharacterSelectionPanel : MonoBehaviour, IControl { public event Action BeforeCharacterChange; public event Action OnCharacterChanged; [SerializeField] TextMeshProUGUI CharacterNameLabel; [SerializeField] Image CharacterIcon; [SerializeField] float ChangeCharacterInterval = 0.15f; [SerializeField] AudioClip ClickSound; private float LastSwipeTime = 0; private Character[] characters; public int CharacterIndex { get; private set; } public int CharactersCount => characters.Length; public Character SelectedCharacter => characters[CharacterIndex]; private bool CanSwipe => Time.time - LastSwipeTime > ChangeCharacterInterval; private void OnEnable() { characters = CharactersController.GetCharactersArray(); CharacterIndex = 0; DisplaySelectedCharacter(); } public void Swipe(int direction) { if (CanSwipe) { if (ClickSound != null) { SoundManager.instance.playClip(ClickSound); } BeforeCharacterChange?.Invoke(SelectedCharacter); CharacterIndex = (CharacterIndex + direction + CharactersCount) % CharactersCount; DisplaySelectedCharacter(); OnCharacterChanged?.Invoke(SelectedCharacter); LastSwipeTime = Time.time; } } public void Switch() { } private void DisplaySelectedCharacter() { CharacterNameLabel.text = SelectedCharacter.Name; CharacterIcon.sprite = SelectedCharacter.Icon; } }