using System;
using UnityEngine;
using UnityEngine.UI;
using UniRx;
public class CardSlot : MonoBehaviour
{
public int slotIndex; // ²èÌ̺¸¤«¤é¿ô¤¨¤Æ²¿ÈÖÌܤΥ¹¥í¥Ã¥È¤Ç¤¢¤ë¤«¤òɽ¤¹Ä̤·ÈÖ¹æ
public OwnerStatus owner; // ¥«¡¼¥É¥¹¥í¥Ã¥È¤Î¥ª¡¼¥Ê¡¼¡£¥ª¡¼¥Ê¡¼¤¬Æ±¤¸¥«¡¼¥É¤Î¤ß¤¬ÇÛÃ֤Ǥ¤ë
public CardController cardController; // ¥¢¥µ¥¤¥ó¤Ï¤·¤Ê¤¤¤Ç»È¤¦¡£¥»¥Ã¥È¤·¤¿¥«¡¼¥É¤Î¥³¥Ô¡¼¤¬¼«Æ°Åª¤Ë¥¢¥µ¥¤¥ó¤µ¤ì¤ë
public IObservable<Unit> OnClickAsObservable => btnSlot.OnClickAsObservable(); // Button ¤Î¹ØÆɽèÍý¤ò¸ø³«
[SerializeField] private Button btnSlot;
private Vector2 size;
/// <summary>
/// ½é´üÀßÄê¡£³°Éô¥¯¥é¥¹¤«¤é¼Â¹Ô¤¹¤ë
/// </summary>
/// <param name="slotIndex"></param>
public void SetUp(int slotIndex)
{
this.slotIndex = slotIndex;
// TODO ¥Ç¥Ð¥Ã¥°ÍÑ
owner = OwnerStatus.Player;
}
/// <summary>
/// ¥«¡¼¥É¤ò¥¹¥í¥Ã¥È¤ËÇÛÃÖ¡£³°Éô¥¯¥é¥¹¤«¤é¡¢¥¹¥í¥Ã¥È¤ò¥¿¥Ã¥×¤·¤¿¤È¤¤Ë¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤ËÀßÄꤹ¤ë
/// </summary>
/// <param name="newCard"></param>
public void SetCard(CardController newCard)
{
// ÁªÂò¤µ¤ì¤Æ¤¤¤ë¥«¡¼¥É¤òÊ£À½¤·¡¢¥¹¥í¥Ã¥È¤È¿Æ»Ò´Ø·¸¤Ë¤¹¤ë
CardController cardClone = Instantiate(newCard, transform);
if (size == Vector2.zero)
{
size = GetComponent<RectTransform>().sizeDelta;
}
// ÇÛÃÖ¤·¤¿¥«¡¼¥É¤Î°ÌÃ֤ȥµ¥¤¥º¤òÄ´À°
if (cardClone.TryGetComponent(out RectTransform rectTransform))
{
rectTransform.pivot = Vector2.zero;
rectTransform.sizeDelta = size;
}
// ¥Ü¥¿¥ó¤Î̵¸ú²½
//TODO cardClone.SetInactive();
// Clone¤µ¤ì¤¿¿·¤·¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ÏClone¸µ¤Î»²¾È¾ðÊ󤬼º¤ï¤ì¤ë¤Î¤Ç¡¢ºÆÅÙÀßÄꤹ¤ë
cardClone.CardEffect = newCard.CardEffect;
cardController = cardClone;
}
/// <summary>
/// À¸À®¤µ¤ì¤¿¥¯¥í¡¼¥ó¤Î¥«¡¼¥É¤òºï½ü¡£¼ç¤Ë¼¡¤Î¥¿¡¼¥ó¤Ë°Ü¤ëºÝ¤ä¡¢¥»¥Ã¥È¤·¤¿¼ê»¥¤ò²ò½ü¤¹¤ë¤È¤¤Ë»È¤¦
/// </summary>
public void DeleteCard()
{
Destroy(cardController.gameObject);
cardController = null;
}
/// <summary>
/// ¥¹¥í¥Ã¥È¤ËÇÛÃ֤Ǥ¤ëÂоÝÀè¤ÎÊѹ¹¡£¥ª¡¼¥Ê¡¼¤ÎÌò³ä¤Ï¡¢Æ±¤¸¥ª¡¼¥Ê¡¼Æ±»Î¤Î¥«¡¼¥É¤·¤«¥¹¥í¥Ã¥È¤ËÇÛÃ֤Ǥ¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤¿¤á
/// </summary>
/// <param name="newOwner"></param>
public void ChangeStatus(OwnerStatus newOwner)
{
owner = newOwner;
}
}