Example-Code / ScriptableObjects / CardData.cs
CardData.cs
Raw
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;
namespace CCG.Bigfoot.ScriptableObjects
{
    /// <summary>
    /// Provides scriptable object creation of a CardData
    /// </summary>
    /// <remarks>
    /// Authors: CS
    /// Created: 2024-01-16
    /// </remarks>
    public enum CardType
    {
        Unset,
        None,
        All,
        Trooper,
        Jedi,
        Sith,
        Rebel,
        Droid,
        BountyHunter,
        Mandolorian,
        Scoundrel,
        Imperial,
        Hutt,
        Jawa,
        Tusken
    }

    public enum NameFontMaterialType
    {
        Normal,
        Leader
    }

    [CreateAssetMenu(fileName = "NewCard", menuName = "Custom/Card")]
    public sealed class CardData : ScriptableObject
    {
        public Sprite Artwork;
        public Sprite FrameArt;
        public Sprite TierArt;

        public int Tier;
        public int Level;

        public string Name;
        public NameFontMaterialType NameFontType;
        public CardType Type;

#if UNITY_EDITOR
#if BIGFOOT_LOCAL
        [ContextMenuItem("Show Text Box", "ShowTextBox")]
#endif
        [TextArea]
#endif
        public string Description;
        public int SortingOrder;
        public int Attack;
        public int Health;

        /// <summary>
        /// Managed at runtime as a way to get the current object using this data.
        /// </summary>
        [System.NonSerialized]
        public RectTransform RectTransform;

#if UNITY_EDITOR && BIGFOOT_LOCAL
        private void ShowTextBox()
        {
            if (!EditorApplication.isPlaying)
            {
                CardScripts.CardDataEditorWindow.ShowWindow(this);
            }
            else
            {
                Debug.LogWarning("Can't show Text Box in Play mode!");
            }
        }
#endif
    }
}