// Copyright (c) Pixel Crushers. All rights reserved.
using UnityEngine;
using System;
namespace PixelCrushers.QuestMachine
{
public enum MessageValueType { None, Int, String }
///
/// Specifies a value passed with a message and parameter.
///
[Serializable]
public class MessageValue
{
[Tooltip("Type of optional value to pass with message.")]
[SerializeField]
private MessageValueType m_valueType = MessageValueType.None;
[Tooltip("Optional int value to pass with message.")]
[SerializeField]
private int m_intValue;
[Tooltip("Optional string value to pass with message.")]
[SerializeField]
private string m_stringValue;
///
/// Type of optional value to pass with message (int or string).
///
public MessageValueType valueType
{
get { return m_valueType; }
set { m_valueType = value; if (value != MessageValueType.String) m_stringValue = null; }
}
///
/// Optional int value to pass with message.
///
public int intValue
{
get { return m_intValue; }
set { valueType = MessageValueType.Int; m_intValue = value; m_stringValue = null; }
}
///
/// Optional string value to pass with message.
///
public string stringValue
{
get { return m_stringValue; }
set { valueType = MessageValueType.String; m_stringValue = value; }
}
public MessageValue()
{
}
public MessageValue(int i)
{
m_valueType = MessageValueType.Int;
m_intValue = i;
}
public MessageValue(string s)
{
m_valueType = MessageValueType.String;
m_stringValue = s;
}
public MessageValue(StringField sf)
{
m_valueType = MessageValueType.String;
m_stringValue = StringField.GetStringValue(sf);
}
public override string ToString()
{
switch (valueType)
{
case MessageValueType.Int:
return intValue.ToString();
case MessageValueType.String:
return stringValue;
default:
return "MessageValue";
}
}
public string EditorNameValue()
{
switch (valueType)
{
case MessageValueType.Int:
return intValue.ToString();
case MessageValueType.String:
return stringValue;
default:
return string.Empty;
}
}
}
}