using System; using Core; using DG.Tweening; using PermanentSystems; using TMPro; using UnityEngine; using UnityEngine.UI; namespace Panels { public class HintsPanel : PanelBase { private event Action OnCloseHint; [SerializeField] private Button closeHintBtn; [SerializeField] private RectTransform hintBox; [SerializeField] private TextMeshProUGUI hintText; [SerializeField] private float openDuration = .65f; [SerializeField] private Ease openEase; [SerializeField] private Ease closeEase; protected override void ReleaseReferences() { OnCloseHint = null; closeHintBtn = null; hintBox = null; hintText = null; base.ReleaseReferences(); } public override void Initialize() { closeHintBtn.onClick.AddListener(HideHint); } public void ShowHint(string inMessage, Action onOpen = null, Action onClose = null) { hintText.text = inMessage; hintBox.localScale = Vector3.zero; OpenPanelImmediately(); hintBox.DOScale(Vector3.one * 1.5f, openDuration) .SetEase(openEase) .OnComplete(() => onOpen?.Invoke()); } private void HideHint() { AudioSystem.PlaySoundEffect(AudioList.ButtonClickB); hintBox.DOScale(Vector3.zero, openDuration) .SetEase(closeEase) .OnComplete(() => { ClosePanelImmediately(); OnCloseHint?.Invoke(); OnCloseHint = null; }); } } }