// Copyright (c) Pixel Crushers. All rights reserved. using UnityEngine; using System; namespace PixelCrushers.QuestMachine { /// /// Specifies how to modify a counter when it receives a message from the MessageSystem. /// [Serializable] public class QuestCounterMessageEvent { [Tooltip("Required message sender.")] [SerializeField] private QuestMessageParticipant m_senderSpecifier = QuestMessageParticipant.Any; [Tooltip("Required message sender ID, or any sender if blank. Can also be {QUESTERID} or {QUESTGIVERID}. Sender must have a Quest Giver or Entity component.")] [SerializeField] private StringField m_senderID; [Tooltip("Required message target.")] [SerializeField] private QuestMessageParticipant m_targetSpecifier = QuestMessageParticipant.Any; [Tooltip("ID of message target. Can also be {QUESTERID} or {QUESTGIVERID}. Leave blank to listen for any target.")] [SerializeField] private StringField m_targetID; [SerializeField] private StringField m_message; [SerializeField] private StringField m_parameter; public enum Operation { ModifyByMessageValue, SetToMessageValue, ModifyByLiteralValue, SetToLiteralValue } [SerializeField] private Operation m_operation; [SerializeField] private int m_literalValue; /// /// Required message sender. /// public QuestMessageParticipant senderSpecifier { get { return m_senderSpecifier; } set { m_senderSpecifier = value; } } /// /// Required message sender ID, or any sender if blank. Can also be {QUESTERID} or {QUESTGIVERID}. Sender must have a Quest Giver or Entity component. /// public StringField senderID { get { return QuestMachineTags.GetIDBySpecifier(senderSpecifier, m_senderID); } set { m_senderID = value; } } /// /// Required message target. /// public QuestMessageParticipant targetSpecifier { get { return m_targetSpecifier; } set { m_targetSpecifier = value; } } /// /// ID of message target. Can also be {QUESTERID} or {QUESTGIVERID}. Leave blank to listen for any target. /// public StringField targetID { get { return QuestMachineTags.GetIDBySpecifier(targetSpecifier, m_targetID); } set { m_targetID = value; } } /// /// Message that counter should listen for. /// public StringField message { get { return m_message; } set { m_message = value; } } /// /// Parameter that must be paired with the message, or blank for any. /// public StringField parameter { get { return m_parameter; } set { m_parameter = value; } } /// /// What to do when the message is received. /// public Operation operation { get { return m_operation; } set { m_operation = value; } } /// /// Value to use when operation is ModifyByLiteralValue or SetToLiteralValue. /// public int literalValue { get { return m_literalValue; } set { m_literalValue = value; } } public QuestCounterMessageEvent() { } public QuestCounterMessageEvent(StringField targetID, StringField message, StringField parameter, Operation operation, int literalValue) { m_targetID = targetID; m_message = message; m_parameter = parameter; m_operation = operation; m_literalValue = literalValue; } } }