Files
beyond/Assets/Scripts/QuestMachineDerivatives/bUnityUIQuestNameButtonTemplate.cs
2024-11-20 15:21:28 +01:00

68 lines
2.1 KiB
C#

// Copyright (c) Pixel Crushers. All rights reserved.
using PixelCrushers;
using PixelCrushers.QuestMachine;
using UnityEngine;
namespace Beyond
{
/// <summary>
/// Unity UI template for a quest name button with a toggle for progress tracking.
/// </summary>
public class bUnityUIQuestNameButtonTemplate : UnityUIContentTemplate
{
[SerializeField]
private UnityEngine.UI.Image m_icon;
[SerializeField]
private bUnityUIButtonTemplate m_buttonTemplate;
[SerializeField]
private UnityUIToggleTemplate m_trackToggleTemplate;
public QuestState state = QuestState.WaitingToStart;
public UnityEngine.UI.Image icon
{
get { return m_icon; }
set { m_icon = value; }
}
public bUnityUIButtonTemplate buttonTemplate
{
get { return m_buttonTemplate; }
set { m_buttonTemplate = value; }
}
public UnityUIToggleTemplate trackToggleTemplate
{
get { return m_trackToggleTemplate; }
set { m_trackToggleTemplate = value; }
}
public virtual void Awake()
{
if (buttonTemplate == null && Debug.isDebugBuild) Debug.LogError("Quest Machine: UI Button Template is unassigned.", this);
if (trackToggleTemplate == null && Debug.isDebugBuild) Debug.LogError("Quest Machine: UI Track Toggle Template is unassigned.", this);
}
public virtual void Assign(Quest quest, ToggleChangedDelegate trackToggleDelegate)
{
state = quest.GetState();
if (quest == null) return;
buttonTemplate.Assign(quest.icon, 1, StringField.GetStringValue(quest.title));
var canTrack = (quest.GetState() == QuestState.Active) && quest.isTrackable;
trackToggleTemplate.Assign(canTrack, quest.showInTrackHUD, quest, trackToggleDelegate);
if (icon != null)
{
icon.gameObject.SetActive(quest.icon != null);
icon.sprite = quest.icon;
}
}
}
}