ProjectDDD/Assets/_DDD/_Scripts/GameUi/InteractionMessageUi.cs

61 lines
2.0 KiB
C#
Raw Normal View History

using TMPro;
2025-08-05 10:46:36 +00:00
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.Components;
using UnityEngine.UI;
namespace DDD
{
public class InteractionMessageUi : BaseUi, IEventHandler<ShowInteractionUiEvent>, IEventHandler<HideInteractionUiEvent>
{
[SerializeField] private Image _filledImage;
[SerializeField] private TextMeshProUGUI _textLabel;
2025-08-05 10:46:36 +00:00
[SerializeField] private LocalizeStringEvent _textLabelLocalizeStringEvent;
[SerializeField] private Color _canInteractTextColor = Color.white;
[SerializeField] private Color _cannotInteractTextColor = Color.gray2;
2025-08-05 10:46:36 +00:00
private LocalizedString _previousLocalizedString;
protected override void Start()
{
base.Start();
_filledImage.fillAmount = 0f;
EventBus.Register<ShowInteractionUiEvent>(this);
EventBus.Register<HideInteractionUiEvent>(this);
}
protected override void OnDestroy()
{
base.OnDestroy();
EventBus.Unregister<ShowInteractionUiEvent>(this);
EventBus.Unregister<HideInteractionUiEvent>(this);
}
public void Invoke(ShowInteractionUiEvent evt)
{
_previousLocalizedString = LocalizationManager.Instance.GetLocalizedString(evt.TextKey);
_textLabel.color = evt.CanInteract ? _canInteractTextColor : _cannotInteractTextColor;
2025-08-05 10:46:36 +00:00
if (_textLabelLocalizeStringEvent.StringReference != _previousLocalizedString)
{
_textLabelLocalizeStringEvent.StringReference = _previousLocalizedString;
}
_filledImage.fillAmount = evt.HoldProgress;
if (_panel.activeInHierarchy == false)
{
OpenPanel();
}
}
public void Invoke(HideInteractionUiEvent evt)
{
_filledImage.fillAmount = 0f;
ClosePanel();
}
}
}