Unity_2lab/2/Assets/Scripts/Card.cs

62 lines
1.6 KiB
C#

using System;
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;
}
}