using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TcgEngine.UI; namespace TcgEngine.Client { /// /// Represents the visual deck on the board /// Will show number of cards in deck/discard when hovering /// public class BoardDeck : MonoBehaviour { public bool opponent; public UIPanel hover_panel; public SpriteRenderer deck_render; public Text deck_value; public Text discard_value; private bool hover = false; void Start() { if (GameTool.IsMobile()) { hover_panel?.SetVisible(true); } } void Update() { Refresh(); } private void Refresh() { if (!GameClient.Get().IsReady()) return; Player player = opponent ? GameClient.Get().GetOpponentPlayer() : GameClient.Get().GetPlayer(); if (player == null) return; // 获取卡背数据,如果为空则使用默认路径 CardbackData cb = CardbackData.Get(player.cardback); if (deck_render != null) { if (cb != null) { deck_render.sprite = cb.GetDeck(); } else { // 如果卡背数据为空,使用默认路径 Sprite defaultDeckSprite = SpriteLoader.Get()?.LoadSprite("Cardbacks/deck_silver.png"); if (defaultDeckSprite != null) { deck_render.sprite = defaultDeckSprite; } else { Debug.LogWarning($"[BoardDeck] {(opponent ? "敌方" : "我方")} 默认牌组图片加载失败: Cardbacks/deck_silver.png"); } } } if (deck_value != null) deck_value.text = player.cards_deck.Count.ToString(); if (discard_value != null) discard_value.text = player.cards_discard.Count.ToString(); } public void ShowDeckCards() { Player player = GameClient.Get().GetPlayer(); CardSelector.Get().Show(player.cards_deck, "DECK"); } public void ShowDiscardCards() { Player player = opponent ? GameClient.Get().GetOpponentPlayer() : GameClient.Get().GetPlayer(); CardSelector.Get().Show(player.cards_discard, "DISCARD"); } private void ShowHover(bool hover) { if(!GameTool.IsMobile()) hover_panel?.SetVisible(hover); } private void OnMouseEnter() { hover = true; ShowHover(hover); Refresh(); } private void OnMouseExit() { hover = false; ShowHover(hover); } private void OnDisable() { hover = false; ShowHover(hover); } private void OnMouseOver() { if (!opponent && Input.GetMouseButtonDown(0)) ShowDeckCards(); //Cannot see opponent deck else if(Input.GetMouseButtonDown(1)) ShowDiscardCards(); //Cant see both player discard } } }