61 lines
1.9 KiB
C#
61 lines
1.9 KiB
C#
// Copyright (c) Pixel Crushers. All rights reserved.
|
|
|
|
using UnityEngine;
|
|
using System.Collections.Generic;
|
|
|
|
namespace PixelCrushers.QuestMachine.Wrappers
|
|
{
|
|
/// <summary>
|
|
/// This wrapper class keeps references intact if you switch between the
|
|
/// compiled assembly and source code versions of the original class.
|
|
/// </summary>
|
|
[AddComponentMenu("Pixel Crushers/Quest Machine/UI/Quest Alert Displayer")]
|
|
public class QuestAlertDisplayer : PixelCrushers.QuestMachine.QuestAlertDisplayer
|
|
{
|
|
[SerializeField] private bool m_queuedAlerts;
|
|
[SerializeField] private UnityUIQuestAlertUI m_unityUiQuestAlertUi;
|
|
private Queue<QueuedAlert> m_alertsQueue = new Queue<QueuedAlert>();
|
|
|
|
|
|
public override void OnMessage(MessageArgs messageArgs)
|
|
{
|
|
if (!m_queuedAlerts)
|
|
{
|
|
base.OnMessage(messageArgs);
|
|
}
|
|
else
|
|
{
|
|
List<QuestContent> uiContent = (messageArgs.values != null && messageArgs.values.Length > 0)
|
|
? (messageArgs.values[0] as List<QuestContent>)
|
|
: null;
|
|
m_alertsQueue.Enqueue(new QueuedAlert(uiContent, messageArgs.parameter));
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (!m_queuedAlerts)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (!m_unityUiQuestAlertUi.isVisible && m_alertsQueue.Count > 0)
|
|
{
|
|
var alert = m_alertsQueue.Dequeue();
|
|
questAlertUI.ShowAlert(alert.parameter, alert.uiContent);
|
|
}
|
|
}
|
|
}
|
|
|
|
public class QueuedAlert
|
|
{
|
|
public string parameter;
|
|
public List<QuestContent> uiContent;
|
|
|
|
public QueuedAlert(List<QuestContent> uiContent, string parameter)
|
|
{
|
|
this.uiContent = uiContent;
|
|
this.parameter = parameter;
|
|
}
|
|
}
|
|
} |