2026-07-14 11:14:13 +03:00

58 lines
1.6 KiB
C#

using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class CharacterSelectionPanel : MonoBehaviour, IControl
{
public event Action<Character> BeforeCharacterChange;
public event Action<Character> 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 = CharacterController.I.characters;
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;
}
}