Files
Ipseity-Demo/Assets/Unheimlich_POC/Scripts/Features/Dialogue/UI/DialogueScreenUI.cs
T
2026-03-09 17:55:23 +01:00

80 lines
2.2 KiB
C#

using UnityEngine;
using TMPro;
using Unheimlich.Core;
using Unheimlich.Core.Utils;
namespace Unheimlich.Features.Dialogue.UI
{
public class DialogueScreenUI : Singleton<DialogueScreenUI>
{
[Header("UI References")]
[SerializeField] private GameObject _dialoguePanel;
[SerializeField] private TextMeshProUGUI _speakerText;
[SerializeField] private TextMeshProUGUI _dialogueText;
[Header("Fade Settings")]
[SerializeField] private float _fadeOutDuration = 0.5f;
private CanvasGroup _canvasGroup;
protected override void OnAwake()
{
if (_dialoguePanel != null)
{
_canvasGroup = _dialoguePanel.GetComponent<CanvasGroup>();
if (_canvasGroup == null)
_canvasGroup = _dialoguePanel.AddComponent<CanvasGroup>();
}
}
public void Show(string speaker, string dialogue)
{
if (_speakerText != null)
_speakerText.text = speaker;
if (_dialogueText != null)
_dialogueText.text = dialogue;
if (_dialoguePanel != null)
{
_dialoguePanel.SetActive(true);
if (_canvasGroup != null)
{
LeanTween.cancel(_dialoguePanel);
_canvasGroup.alpha = 1f;
}
}
}
public void Hide()
{
if (_dialoguePanel != null)
_dialoguePanel.SetActive(false);
}
public void FadeOutAndHide(System.Action onComplete = null)
{
if (_canvasGroup != null && _dialoguePanel != null)
{
TweenHelper.FadeCanvasGroup(
_canvasGroup,
0f,
_fadeOutDuration,
() => {
Hide();
onComplete.SafeInvoke();
});
}
else
{
Hide();
onComplete.SafeInvoke();
}
}
}
}