68 lines
2.1 KiB
C#
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;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|