2021년 4학년 1학기 기업연계프로젝트2 컴퓨터소프트웨어공학과 <원광투어팀> 팀장 : 송유진 팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.7 KiB

5 years ago
  1. using System.Collections.Generic;
  2. using Unity.FPS.Game;
  3. using UnityEngine;
  4. namespace Unity.FPS.UI
  5. {
  6. public class DisplayMessageManager : MonoBehaviour
  7. {
  8. public UITable DisplayMessageRect;
  9. public NotificationToast MessagePrefab;
  10. List<(float timestamp, float delay, string message, NotificationToast notification)> m_PendingMessages;
  11. void Awake()
  12. {
  13. EventManager.AddListener<DisplayMessageEvent>(OnDisplayMessageEvent);
  14. m_PendingMessages = new List<(float, float, string, NotificationToast)>();
  15. }
  16. void OnDisplayMessageEvent(DisplayMessageEvent evt)
  17. {
  18. NotificationToast notification = Instantiate(MessagePrefab, DisplayMessageRect.transform).GetComponent<NotificationToast>();
  19. m_PendingMessages.Add((Time.time, evt.DelayBeforeDisplay, evt.Message, notification));
  20. }
  21. void Update()
  22. {
  23. foreach (var message in m_PendingMessages)
  24. {
  25. if (Time.time - message.timestamp > message.delay)
  26. {
  27. message.Item4.Initialize(message.message);
  28. DisplayMessage(message.notification);
  29. }
  30. }
  31. // Clear deprecated messages
  32. m_PendingMessages.RemoveAll(x => x.notification.Initialized);
  33. }
  34. void DisplayMessage(NotificationToast notification)
  35. {
  36. DisplayMessageRect.UpdateTable(notification.gameObject);
  37. //StartCoroutine(MessagePrefab.ReturnWithDelay(notification.gameObject, notification.TotalRunTime));
  38. }
  39. void OnDestroy()
  40. {
  41. EventManager.RemoveListener<DisplayMessageEvent>(OnDisplayMessageEvent);
  42. }
  43. }
  44. }