Files
beyond/Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Action/SetTrackingQuestAction.cs
2024-11-20 15:21:28 +01:00

69 lines
1.9 KiB
C#

// Copyright (c) Pixel Crushers. All rights reserved.
using UnityEngine;
namespace PixelCrushers.QuestMachine
{
/// <summary>
/// Tracks or untracks a quest in the HUD.
/// </summary>
public class SetTrackingQuestAction : QuestAction
{
[Tooltip("ID of quest for which this indicator state applies, or blank for this quest.")]
[SerializeField]
private StringField m_questID;
[Tooltip("ID of entity whose indicator to set, or blank to set quest giver.")]
[SerializeField]
private StringField m_entityID;
[Tooltip("Track quest in HUD.")]
[SerializeField]
private bool m_showInTrackHUD;
public StringField questID
{
get { return m_questID; }
set { m_questID = value; }
}
public StringField entityID
{
get { return m_entityID; }
set { m_entityID = value; }
}
public bool showInTrackHUD
{
get { return m_showInTrackHUD; }
set { m_showInTrackHUD = value; }
}
public string runtimeEntityID
{
get
{
var s = StringField.GetStringValue(entityID);
return (string.IsNullOrEmpty(s) && quest != null) ? StringField.GetStringValue(quest.questGiverID) : QuestMachineTags.ReplaceTags(s, quest);
}
}
public override string GetEditorName()
{
if (StringField.IsNullOrEmpty(entityID)) return "Set Tracking";
return "Set Tracking: " + questID + " " + entityID + " " + showInTrackHUD;
}
public override void Execute()
{
var affectedQuest = StringField.IsNullOrEmpty(questID) ? this.quest : QuestMachine.GetQuestInstance(questID, entityID);
if (affectedQuest == null) return;
affectedQuest.showInTrackHUD = showInTrackHUD;
}
}
}