// 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); } } }