using CCG.Bigfoot.TestScripts; using CCG.Bigfoot.Utility; using JetBrains.Annotations; using UnityEngine; namespace CCG.Bigfoot.CardScripts { /// <summary> /// This is the card object used in battle on the card prefab that is used in battle. /// </summary> /// <remarks> /// Authors: CS /// Created: 2024-01-11 /// </remarks> public sealed partial class BattleCard : BaseCard, IPoolable { [CanBeNull] public CardSpace CardSpace { get; private set; } #region IPoolable Implementation public ObjectPooler.PooledPrefabName Identifier { get; set; } public bool IsInUseEvenIfInactive { get; set; } public MonoBehaviour Mono { get; set; } #endregion #region Methods public static void Initialize(float initialPlaneDistance, float dragCardPlaneDistance, RectTransform dragCardRect, LayerMask cardSpaceLayerMask) { _initialPlaneDistance = initialPlaneDistance; _draggingPlaneDistance = dragCardPlaneDistance; _dragCardCanvasRect = dragCardRect; _cardSpaceLayerMask = cardSpaceLayerMask; } public void SetPortraitSortingGroup(int targetGroup) { _sortingGroup.sortingOrder = targetGroup; } public override void Set(ScriptableObject data) { base.Set(data); } public override void Wash() { base.Wash(); Mono = null; } private void HideFields() { _nameField.gameObject.SetActive(false); _typeField.gameObject.SetActive(false); _abilityField.gameObject.SetActive(false); } public void SetActive(bool isActive) { gameObject.SetActive(isActive); } #region IPoolable Implementation void IPoolable.Setup(ScriptableObject data) { Set(data); Mono = this; } public void Activate() { SetActive(true); } public void Deactivate(bool isReturnToPoolAfterDeactivate) { Wash(); SetActive(false); if (isReturnToPoolAfterDeactivate) { ObjectPooler.Instance.ReturnToPool(transform); } } #endregion #endregion } }