61 lines
1.6 KiB
C#
61 lines
1.6 KiB
C#
using UnityEngine;
|
|
|
|
[RequireComponent(typeof(SpriteRenderer), typeof(BoxCollider2D))]
|
|
public class Card : MonoBehaviour
|
|
{
|
|
private SpriteRenderer _spriteRenderer;
|
|
private Sprite _backSprite;
|
|
private Sprite _frontSprite;
|
|
private Animation _animation;
|
|
private bool _isBackSide = true;
|
|
private BoxCollider2D _boxCollider2d;
|
|
public int Index {get; private set;}
|
|
|
|
private CardCollector _cardCollector;
|
|
private void Awake()
|
|
{
|
|
_spriteRenderer = GetComponent<SpriteRenderer>();
|
|
_animation = GetComponent<Animation>();
|
|
_boxCollider2d = GetComponent<BoxCollider2D>();
|
|
}
|
|
private void OnMouseDown()
|
|
{
|
|
if (_cardCollector.TwoCardsClosed())
|
|
{
|
|
_boxCollider2d.enabled = false;
|
|
CardAnimation();
|
|
_cardCollector.OpenCard(this);
|
|
}
|
|
|
|
}
|
|
|
|
public void EnableCollider()
|
|
{
|
|
_boxCollider2d.enabled = true;
|
|
}
|
|
|
|
public void ChangeSpriteCard()
|
|
{
|
|
_spriteRenderer.sprite = _isBackSide ? _backSprite : _frontSprite;
|
|
Debug.Log($"Card {gameObject.name}: Changing to {(_isBackSide ? "Back" : "Front")} sprite. Current _isBackSide: {_isBackSide}");
|
|
}
|
|
public void CardAnimation()
|
|
{
|
|
_isBackSide = !_isBackSide;
|
|
_animation.Play(_isBackSide ? "ToBack" : "ToFront");
|
|
|
|
}
|
|
|
|
public void CardSettings(Sprite back, Sprite front, int index)
|
|
{
|
|
_spriteRenderer.sprite = _backSprite = back;
|
|
_frontSprite = front;
|
|
Index = index;
|
|
}
|
|
|
|
public void SetCardCollector(CardCollector cardCollector)
|
|
{
|
|
_cardCollector = cardCollector;
|
|
}
|
|
}
|