Files
Alex38Lyon 878ea46cac update
2025-06-03 12:00:47 +02:00

52 lines
1.7 KiB
C#

using System.Collections.Generic;
using Unity.FPS.Game;
using UnityEngine;
namespace Unity.FPS.UI
{
public class DisplayMessageManager : MonoBehaviour
{
public UITable DisplayMessageRect;
public NotificationToast MessagePrefab;
List<(float timestamp, float delay, string message, NotificationToast notification)> m_PendingMessages;
void Awake()
{
EventManager.AddListener<DisplayMessageEvent>(OnDisplayMessageEvent);
m_PendingMessages = new List<(float, float, string, NotificationToast)>();
}
void OnDisplayMessageEvent(DisplayMessageEvent evt)
{
NotificationToast notification = Instantiate(MessagePrefab, DisplayMessageRect.transform).GetComponent<NotificationToast>();
m_PendingMessages.Add((Time.time, evt.DelayBeforeDisplay, evt.Message, notification));
}
void Update()
{
foreach (var message in m_PendingMessages)
{
if (Time.time - message.timestamp > message.delay)
{
message.Item4.Initialize(message.message);
DisplayMessage(message.notification);
}
}
// Clear deprecated messages
m_PendingMessages.RemoveAll(x => x.notification.Initialized);
}
void DisplayMessage(NotificationToast notification)
{
DisplayMessageRect.UpdateTable(notification.gameObject);
//StartCoroutine(MessagePrefab.ReturnWithDelay(notification.gameObject, notification.TotalRunTime));
}
void OnDestroy()
{
EventManager.RemoveListener<DisplayMessageEvent>(OnDisplayMessageEvent);
}
}
}