2021-09-20 00:14:32 +02:00
|
|
|
using UnityEngine;
|
2021-12-29 20:10:01 +01:00
|
|
|
using UnityEngine.EventSystems;
|
2023-10-01 17:21:54 +03:00
|
|
|
using UnityEngine.UI;
|
2021-09-20 00:14:32 +02:00
|
|
|
|
2023-10-01 17:21:54 +03:00
|
|
|
public class CharacterButton : MonoBehaviour, ISelectHandler, IDeselectHandler, IPointerEnterHandler, IPointerExitHandler
|
2021-09-20 00:14:32 +02:00
|
|
|
{
|
2022-10-12 23:30:09 +02:00
|
|
|
[SerializeField] private PlayerStatsSO _playerStatsSO = default;
|
|
|
|
|
[SerializeField] private CharacterMenu _characterMenu = default;
|
2023-09-22 16:54:55 +03:00
|
|
|
[SerializeField] private GameObject _backgroundImage = default;
|
2022-10-12 23:30:09 +02:00
|
|
|
[SerializeField] private GameObject _firstPlayerSelector = default;
|
|
|
|
|
[SerializeField] private GameObject _secondPlayerSelector = default;
|
|
|
|
|
[SerializeField] private bool _isRandomizer = default;
|
|
|
|
|
private Audio _audio;
|
2023-10-01 17:21:54 +03:00
|
|
|
private Button _button;
|
2021-09-20 00:14:32 +02:00
|
|
|
|
2022-10-12 23:30:09 +02:00
|
|
|
public PlayerStatsSO PlayerStatsSO { get { return _playerStatsSO; } set { } }
|
|
|
|
|
public bool IsRandomizer { get { return _isRandomizer; } private set { } }
|
2021-12-29 20:10:01 +01:00
|
|
|
|
2022-10-12 23:30:09 +02:00
|
|
|
void Start()
|
|
|
|
|
{
|
|
|
|
|
_audio = GetComponent<Audio>();
|
2023-10-01 17:21:54 +03:00
|
|
|
_button = GetComponent<Button>();
|
2022-10-12 23:30:09 +02:00
|
|
|
}
|
2021-12-30 14:35:37 +01:00
|
|
|
|
2022-10-12 23:30:09 +02:00
|
|
|
public void OnSelect(BaseEventData eventData)
|
|
|
|
|
{
|
|
|
|
|
_audio.Sound("Selected").Play();
|
|
|
|
|
if (!_characterMenu.FirstCharacterSelected)
|
|
|
|
|
_firstPlayerSelector.SetActive(true);
|
|
|
|
|
else
|
|
|
|
|
_secondPlayerSelector.SetActive(true);
|
|
|
|
|
_characterMenu.SetCharacterImage(PlayerStatsSO, IsRandomizer);
|
|
|
|
|
}
|
2021-12-29 20:10:01 +01:00
|
|
|
|
2022-10-12 23:30:09 +02:00
|
|
|
public void OnDeselect(BaseEventData eventData)
|
|
|
|
|
{
|
2023-09-24 11:02:44 +02:00
|
|
|
if (!_characterMenu.FirstCharacterSelected && !_characterMenu.FirstCharacterLocked)
|
2022-10-12 23:30:09 +02:00
|
|
|
_firstPlayerSelector.SetActive(false);
|
2023-09-24 11:02:44 +02:00
|
|
|
else if (!_characterMenu.SecondCharacterLocked)
|
2022-10-12 23:30:09 +02:00
|
|
|
_secondPlayerSelector.SetActive(false);
|
|
|
|
|
}
|
2021-12-30 00:21:11 +01:00
|
|
|
|
2022-10-12 23:30:09 +02:00
|
|
|
public void Click()
|
|
|
|
|
{
|
|
|
|
|
_audio.Sound("Pressed").Play();
|
|
|
|
|
_characterMenu.SelectCharacterImage();
|
2023-09-22 16:54:55 +03:00
|
|
|
_backgroundImage.SetActive(true);
|
2022-10-12 23:30:09 +02:00
|
|
|
}
|
2021-12-30 14:28:24 +01:00
|
|
|
|
2022-10-12 23:30:09 +02:00
|
|
|
private void OnDisable()
|
|
|
|
|
{
|
2023-09-22 16:54:55 +03:00
|
|
|
_backgroundImage.SetActive(false);
|
2022-10-12 23:30:09 +02:00
|
|
|
_firstPlayerSelector.SetActive(false);
|
|
|
|
|
_secondPlayerSelector.SetActive(false);
|
|
|
|
|
}
|
2023-10-01 17:21:54 +03:00
|
|
|
public void OnPointerEnter(PointerEventData eventData)
|
|
|
|
|
{
|
2023-10-09 12:39:56 +03:00
|
|
|
if (!_characterMenu.FirstCharacterSelected && _characterMenu.FirstCharacterLocked)
|
|
|
|
|
return;
|
|
|
|
|
if (_characterMenu.SecondCharacterLocked)
|
2023-10-01 17:21:54 +03:00
|
|
|
return;
|
|
|
|
|
Cursor.SetCursor(MouseSetup.Instance.HoverCursor, Vector2.zero, CursorMode.Auto);
|
|
|
|
|
_button.Select();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void OnPointerExit(PointerEventData eventData) => Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
|
2022-10-12 23:30:09 +02:00
|
|
|
}
|