// Copyright (c) Pixel Crushers. All rights reserved.
using UnityEngine;
using System.Collections.Generic;
namespace PixelCrushers.QuestMachine.Wrappers
{
///
/// This wrapper class keeps references intact if you switch between the
/// compiled assembly and source code versions of the original class.
///
[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 m_alertsQueue = new Queue();
public override void OnMessage(MessageArgs messageArgs)
{
if (!m_queuedAlerts)
{
base.OnMessage(messageArgs);
}
else
{
List uiContent = (messageArgs.values != null && messageArgs.values.Length > 0)
? (messageArgs.values[0] as List)
: 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 uiContent;
public QueuedAlert(List uiContent, string parameter)
{
this.uiContent = uiContent;
this.parameter = parameter;
}
}
}