103 lines
2.7 KiB
C#
103 lines
2.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace TcgEngine.UI
|
|
{
|
|
public class ChangeCoverPanel : UIPanel
|
|
{
|
|
public Text coverNameText;
|
|
|
|
public Transform content;
|
|
public GameObject coverPrefab;
|
|
|
|
// 防止重复点击
|
|
public Image clickBlocker;
|
|
|
|
public UserDeckData udeck;
|
|
private List<ChangeCoverLine> lineList = new List<ChangeCoverLine>();
|
|
private bool isInit = false;
|
|
|
|
private static ChangeCoverPanel instance;
|
|
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
instance = this;
|
|
for (int i = 0; i < content.childCount; i++)
|
|
Destroy(content.GetChild(i).gameObject);
|
|
}
|
|
|
|
protected override void Start()
|
|
{
|
|
base.Start();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生成并排布所有卡片封面
|
|
/// </summary>
|
|
private void GenerateCardCovers()
|
|
{
|
|
Debug.Log("数据有"+CardCoverData.GetAll().Count);
|
|
foreach (CardCoverData cover in CardCoverData.GetAll())
|
|
{
|
|
GameObject cardCover = Instantiate(coverPrefab, content);
|
|
var line = cardCover.GetComponent<ChangeCoverLine>();
|
|
line.SetCover(cover.GetCardCover(), cover.name);
|
|
line.OnChangeCover += SaveCardCover;
|
|
lineList.Add(line);
|
|
}
|
|
isInit = true;
|
|
}
|
|
|
|
private void RefreshPanel()
|
|
{
|
|
foreach (var line in lineList)
|
|
{
|
|
line.RefreshCurrentCover(udeck.cover);
|
|
}
|
|
}
|
|
|
|
public void OpenPanel(DeckLine line)
|
|
{
|
|
if (!isInit)
|
|
{
|
|
GenerateCardCovers();
|
|
}
|
|
Show();
|
|
udeck = line.GetUserDeck();
|
|
coverNameText.text = udeck.title;
|
|
RefreshPanel();
|
|
}
|
|
|
|
public void SaveCardCover(ChangeCoverLine line)
|
|
{
|
|
UserData udata = Authenticator.Get().UserData;
|
|
udeck.cover = line.coverName;
|
|
|
|
clickBlocker.gameObject.SetActive(true);
|
|
|
|
// ✅ 立即刷新当前 UI
|
|
RefreshPanel(); // 封面变黄
|
|
CollectionPanel.Get().RefreshCover(line.cover); // 卡组封面即时更新
|
|
|
|
CollectionPanel.Get().SaveDeckAPI(udata, udeck);
|
|
Hide();
|
|
}
|
|
|
|
|
|
public override void Show(bool instant = false)
|
|
{
|
|
base.Show(instant);
|
|
clickBlocker.gameObject.SetActive(false);
|
|
}
|
|
|
|
public static ChangeCoverPanel Get()
|
|
{
|
|
return instance;
|
|
}
|
|
}
|
|
}
|
|
|