You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.6 KiB
C#
88 lines
2.6 KiB
C#
1 month ago
|
using System;
|
||
|
using TMPro;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.Assertions;
|
||
|
using UnityEngine.UI;
|
||
|
|
||
|
namespace WalletConnectUnity.UI
|
||
|
{
|
||
|
public sealed class WCModalHeader : MonoBehaviour
|
||
|
{
|
||
|
[field: SerializeField] public WCSnackbar Snackbar { get; private set; }
|
||
|
|
||
|
[field: SerializeField] public RectTransform RectTransform { get; private set; }
|
||
|
|
||
|
[field: SerializeField] private TMP_Text TitleText { get; set; }
|
||
|
|
||
|
[field: SerializeField] private Button LeftButton { get; set; }
|
||
|
|
||
|
[field: SerializeField] private Image LeftButtonImage { get; set; }
|
||
|
|
||
|
[field: SerializeField] private Button RightButton { get; set; }
|
||
|
|
||
|
[field: SerializeField, Space] private WCModal Modal { get; set; }
|
||
|
|
||
|
public float Height => RectTransform.rect.height;
|
||
|
|
||
|
private bool _leftButtonCustom;
|
||
|
private Action _leftButtonAction;
|
||
|
private Sprite _leftButtonDefaultSprite;
|
||
|
|
||
|
public string Title
|
||
|
{
|
||
|
get => TitleText.text;
|
||
|
set => TitleText.text = value;
|
||
|
}
|
||
|
|
||
|
private void Awake()
|
||
|
{
|
||
|
Assert.IsNotNull(RectTransform, $"Missing {nameof(RectTransform)} reference in {name}");
|
||
|
Assert.IsNotNull(TitleText, $"Missing {nameof(TitleText)} reference in {name}");
|
||
|
Assert.IsNotNull(LeftButton, $"Missing {nameof(LeftButton)} reference in {name}");
|
||
|
Assert.IsNotNull(RightButton, $"Missing {nameof(RightButton)} reference in {name}");
|
||
|
|
||
|
Assert.IsNotNull(Modal, $"Missing {nameof(Modal)} reference in {name}");
|
||
|
|
||
|
LeftButton.onClick.AddListener(OnLeftButtonClicked);
|
||
|
RightButton.onClick.AddListener(OnRightButtonClicked);
|
||
|
|
||
|
_leftButtonDefaultSprite = LeftButtonImage.sprite;
|
||
|
}
|
||
|
|
||
|
public void SetCustomLeftButton(Sprite sprite, Action onClick)
|
||
|
{
|
||
|
_leftButtonCustom = true;
|
||
|
_leftButtonAction = onClick;
|
||
|
|
||
|
LeftButtonImage.sprite = sprite;
|
||
|
|
||
|
if (LeftButton.gameObject.activeSelf == false)
|
||
|
LeftButton.gameObject.SetActive(true);
|
||
|
}
|
||
|
|
||
|
public void RemoveCustomLeftButton()
|
||
|
{
|
||
|
_leftButtonCustom = false;
|
||
|
_leftButtonAction = null;
|
||
|
|
||
|
LeftButtonImage.sprite = _leftButtonDefaultSprite;
|
||
|
}
|
||
|
|
||
|
private void OnLeftButtonClicked()
|
||
|
{
|
||
|
if (_leftButtonCustom)
|
||
|
{
|
||
|
_leftButtonAction?.Invoke();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Modal.CloseView();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void OnRightButtonClicked()
|
||
|
{
|
||
|
Modal.CloseModal();
|
||
|
}
|
||
|
}
|
||
|
}
|