110 lines
2.8 KiB
C#
110 lines
2.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace TcgEngine.Client
|
|
{
|
|
/// <summary>
|
|
/// Same as HandCard, but simpler version for the opponent's cards
|
|
/// </summary>
|
|
|
|
public class HandCardBack : MonoBehaviour
|
|
{
|
|
public Image card_sprite;
|
|
|
|
[Header("Dynamic Art Path")]
|
|
[SerializeField] private string cardback_path;
|
|
|
|
private RectTransform rect;
|
|
|
|
private static List<HandCardBack> card_list = new List<HandCardBack>();
|
|
|
|
void Awake()
|
|
{
|
|
card_list.Add(this);
|
|
rect = GetComponent<RectTransform>();
|
|
|
|
// 如果有设置路径,自动加载
|
|
if (!string.IsNullOrEmpty(cardback_path))
|
|
{
|
|
LoadCardbackSprite();
|
|
}
|
|
else
|
|
{
|
|
SetCardback(null);
|
|
}
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
card_list.Remove(this);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 在 Inspector 中修改值时自动重新加载
|
|
/// </summary>
|
|
private void OnValidate()
|
|
{
|
|
if (Application.isPlaying && !string.IsNullOrEmpty(cardback_path))
|
|
{
|
|
LoadCardbackSprite();
|
|
}
|
|
}
|
|
|
|
public void SetCardback(CardbackData cb)
|
|
{
|
|
if (cb != null)
|
|
card_sprite.sprite = cb.GetCardback();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置卡背图片,使用本地图片路径
|
|
/// </summary>
|
|
public void SetCardbackPath(string path)
|
|
{
|
|
cardback_path = path;
|
|
LoadCardbackSprite();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取当前卡背路径
|
|
/// </summary>
|
|
public string GetCardbackPath()
|
|
{
|
|
return cardback_path;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载卡背图片
|
|
/// </summary>
|
|
private void LoadCardbackSprite()
|
|
{
|
|
if (!string.IsNullOrEmpty(cardback_path))
|
|
{
|
|
Sprite dynamicSprite = SpriteLoader.Get()?.LoadSprite(cardback_path);
|
|
if (dynamicSprite != null)
|
|
{
|
|
card_sprite.sprite = dynamicSprite;
|
|
}
|
|
else
|
|
{
|
|
Debug.LogWarning($"HandCardBack 卡背图片加载失败: {cardback_path}");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Debug.LogWarning($"HandCardBack cardback_path为空");
|
|
}
|
|
}
|
|
|
|
public RectTransform GetRect()
|
|
{
|
|
if (rect == null)
|
|
return GetComponent<RectTransform>();
|
|
return rect;
|
|
}
|
|
|
|
}
|
|
}
|