using CCG.Bigfoot.ScriptableObjects; using System.Collections.Generic; using CCG.Bigfoot.Utility; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Rendering; namespace CCG.Bigfoot.CardScripts { /// <summary> /// Common behavior between CollectionCard and BattleCard goes here. /// </summary> /// <remarks> Be diligent; refactor this class often to have shared behavior between CollectionCard and BattleCard /// Authors: CS /// Created: 2024-01-11 /// </remarks> public class BaseCard : MonoBehaviour { #region Variables protected RectTransform _rectTransform = null; [Header("Card Assets")] [SerializeField] protected TMP_Text _cardDescription; //--Ability == Description. [SerializeField] protected TMP_Text _nameField; [SerializeField] protected TMP_Text _typeField; [SerializeField] protected TMP_Text _abilityField; [SerializeField] protected TMP_Text _powerValueField; [SerializeField] protected TMP_Text _healthValueField; [SerializeField] protected SpriteRenderer _cardArtRenderer; [SerializeField] protected SpriteRenderer _frameRenderer; [SerializeField] protected SpriteRenderer _tierRenderer; [SerializeField] protected SortingGroup _sortingGroup; private static readonly Dictionary<NameFontMaterialType, string> _nameFontMaterials = new() { {NameFontMaterialType.Normal, "Fonts & Materials/Gotham-Black_Normal"}, {NameFontMaterialType.Leader, "Fonts & Materials/Gotham-Black_Leader"} }; public CardData CardData { get; protected set; } #endregion #region Callbacks #endregion #region Methods /// <summary> /// Applies the data to the model for viewing. /// </summary> /// <param name="data"></param> public virtual void Set(ScriptableObject data) { if (data == null) { Debug.Log("[Set] - Null data."); Wash(); transform.ResetLocal(); return; } try { CardData = data as CardData; string fontMaterial = _nameFontMaterials[CardData.NameFontType]; if (fontMaterial.Length > 0) { Material nameMaterial = Resources.Load<Material>(fontMaterial); if (nameMaterial != null) { _nameField.fontMaterial = nameMaterial; } } _nameField.text = CardData.Name; _typeField.text = CardData.Type.ToString(); _powerValueField.text = CardData.Attack.ToString(); _healthValueField.text = CardData.Health.ToString(); _cardArtRenderer.sprite = CardData.Artwork; _tierRenderer.sprite = CardData.TierArt; _frameRenderer.sprite = CardData.FrameArt; _abilityField.text = CardData.Description;//--Description == Ability _rectTransform = transform as RectTransform; } catch { Debug.LogError("[Set] - Caught error."); } } public virtual void Wash() { CardData = null; _nameField.text = string.Empty; _typeField.text = string.Empty; _powerValueField.text = string.Empty; _healthValueField.text = string.Empty; _cardArtRenderer.sprite = null; _tierRenderer.sprite = null; _frameRenderer.sprite = null; } #endregion } }