横竖版展示逻辑

This commit is contained in:
YiHan0621
2025-09-22 11:46:05 +08:00
parent 8ae9bbc7b1
commit 1aa3eef202
29 changed files with 254 additions and 38 deletions

View File

@@ -74,8 +74,11 @@ namespace TcgEngine.UI
if (!isSameCard)
{
if(card_image != null)
if (card_image != null)
{
card_image.enabled = true;
card_image.sprite = card.GetFullArt(variant);
}
if (frame_image != null)
frame_image.sprite = (variant != null) ? variant.frame : frame_image.sprite;
if (card_title != null)
@@ -139,6 +142,31 @@ namespace TcgEngine.UI
gameObject.SetActive(true);
}
public void SetCard(CardData card)
{
if (card == null)
return;
bool isSameCard = (this.card == card);
this.card = card;
if (!isSameCard)
{
if (card_image != null)
{
card_image.enabled = true;
card_image.sprite = card.GetVerticalArt();
}
if (team_icon != null)
{
Sprite teamSprite = (card.team != null) ? card.team.icon : null;
team_icon.sprite = teamSprite;
team_icon.enabled = teamSprite != null;
}
}
}
public void SetHP(int hp_value)
{
if (hp != null)
@@ -190,7 +218,31 @@ namespace TcgEngine.UI
if (card_text != null)
card_text.color = new Color(card_text.color.r, card_text.color.g, card_text.color.b, opacity);
}
#region ================== ==================
/// <summary>
/// 重置数据并隐藏
/// </summary>
public void ResetLine()
{
card = null;
variant = null;
if (card_image) card_image.enabled = false;
if (frame_image) frame_image.enabled = false;
if (team_icon) team_icon.enabled = false;
}
/// <summary>
/// 展开用户卡组信息
/// </summary>
public void Refresh(CardData card, VariantData variant)
{
SetCard(card);
}
#endregion
public void Hide()
{
if (gameObject.activeSelf)

View File

@@ -35,8 +35,8 @@ namespace TcgEngine.UI
// 卡组展示管理
public int card_lines_size = 12;
public List<DeckLine> card_pool = new List<DeckLine>();
public List<DeckLine> card_lines = new List<DeckLine>();
public List<CardUI> card_pool = new List<CardUI>();
public List<CardUI> card_lines = new List<CardUI>();
private UserData lastUserData;
@@ -65,7 +65,7 @@ namespace TcgEngine.UI
for (int i = 0; i < card_lines_size; i++)
{
GameObject card = Instantiate(card_lines_prefab, deck_display_grid.transform);
DeckLine line = card.GetComponent<DeckLine>();
CardUI line = card.GetComponent<CardUI>();
line.gameObject.SetActive(false);
card_pool.Add(line);
}
@@ -165,12 +165,12 @@ namespace TcgEngine.UI
for (int i = 0; i < udeck.cards.Length; i++)
{
UserCardData ucard = udeck.cards[i];
DeckLine line = card_pool[i];
CardUI line = card_pool[i];
CardData cdata = CardData.Get(ucard.tid);
VariantData variant = VariantData.Get(ucard.variant);
line.Refresh(cdata, variant, ucard.quantity);
line.Refresh(cdata, variant);
line.gameObject.SetActive(true);
card_lines.Add(line);
}