// Copyright (c) Pixel Crushers. All rights reserved.
using UnityEngine;
using System;
namespace PixelCrushers.DialogueSystem
{
///
/// Quick Time Event (QTE) indicator controls for StandardDialogueUI.
///
[Serializable]
public class StandardUIQTEControls : AbstractUIQTEControls
{
[Tooltip("(Optional) Quick Time Event (QTE) indicators. Typically graphics such as images or sprites.")]
public GameObject[] QTEIndicators;
private int m_numVisibleQTEIndicators = 0;
///
/// Are any QTE indicators visible?
///
public override bool areVisible
{
get { return (m_numVisibleQTEIndicators > 0); }
}
///
/// Sets the QTE controls active/inactive.
///
public override void SetActive(bool value)
{
if (value == false) HideImmediate();
}
public void HideImmediate()
{
m_numVisibleQTEIndicators = 0;
foreach (var qteIndicator in QTEIndicators)
{
Tools.SetGameObjectActive(qteIndicator, false);
}
}
///
/// Shows the QTE indicator specified by the index.
///
/// Zero-based index of the indicator.
public override void ShowIndicator(int index)
{
if (!IsQTEIndicatorVisible(index))
{
Tools.SetGameObjectActive(QTEIndicators[index], true);
m_numVisibleQTEIndicators++;
}
}
///
/// Hides the QTE indicator specified by the index.
///
/// Zero-based index of the indicator.
public override void HideIndicator(int index)
{
if (IsValidQTEIndex(index) && IsQTEIndicatorVisible(index))
{
Tools.SetGameObjectActive(QTEIndicators[index], false);
m_numVisibleQTEIndicators--;
}
}
private bool IsQTEIndicatorVisible(int index)
{
return IsValidQTEIndex(index) ? QTEIndicators[index].gameObject.activeSelf : false;
}
private bool IsValidQTEIndex(int index)
{
return (0 <= index) && (index < QTEIndicators.Length);
}
}
}