using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace TcgEngine.UI { /// /// 卡包面板与收藏相似,但会显示您拥有的所有卡包以及所有可用卡包 /// public class PackPanel : UIPanel { [Header("Packs")] public ScrollRect scroll_rect; public RectTransform scroll_content; public CardGrid grid_content; public GameObject pack_prefab; [Header("货币")] public Text coin; public Text crystal; [Header("当前选择准备卡组")] public PackData preparePack; private List pack_list = new List(); private static PackPanel instance; protected override void Awake() { base.Awake(); instance = this; //Delete grid content for (int i = 0; i < grid_content.transform.childCount; i++) Destroy(grid_content.transform.GetChild(i).gameObject); } protected override void Start() { base.Start(); } protected override void Update() { base.Update(); } public async void ReloadUserPack() { await Authenticator.Get().LoadUserData(); RefreshPacks(); } /// /// 刷新全部 /// private void RefreshAll() { RefreshPacks(); RefreshStarterDeck(); RefreshCurrency(); } public void RefreshPacks() { UserData udata = Authenticator.Get().UserData; foreach (GameObject card in pack_list) Destroy(card.gameObject); pack_list.Clear(); foreach (PackData pack in PackData.GetAllAvailable()) { GameObject nPack = Instantiate(pack_prefab, grid_content.transform); PackUI pack_ui = nPack.GetComponentInChildren(); pack_ui.SetPack(pack, udata.GetPackQuantity(pack.id)); pack_ui.onClick += OnClickPack; pack_ui.onClickRight += OnClickPack; pack_list.Add(nPack); if (pack.title == "白银卡包") { SetPackData(pack); } } } // 刷新新手卡组 private void RefreshStarterDeck() { UserData udata = Authenticator.Get().UserData; if (udata != null && (udata.cards.Length == 0 || udata.rewards.Length == 0)) { if (GameplayData.Get().starter_decks.Length > 0) { StarterDeckPanel.Get().Show(); } } } private void OnClickPack() { if (preparePack != null) { PackZoomPanel.Get().OnClickBuy(preparePack); } } /// /// 刷新货币 /// public void RefreshCurrency() { coin.text = MainMenu.Get().credits_txt.text; crystal.text = MainMenu.Get().crystalText.text; } /// /// 设置即将打开卡包的数据 /// private string SetPackData(PackData pack) { PlayerPrefs.SetString("SetPack",pack.id); if (PlayerPrefs.GetString("SetPack") != null) { string setPack = PlayerPrefs.GetString("SetPack"); Debug.Log($"已设置{setPack},准备就绪"); } return PlayerPrefs.GetString("SetPack"); } public void OnClickPack(PackUI pack) { PackZoomPanel.Get().ShowPack(pack.GetPack()); } public void OnClickCardRight(PackUI pack) { PackZoomPanel.Get().ShowPack(pack.GetPack()); } public void OnClickOpenPacks() { MainMenu.Get().FadeToScene("OpenPack"); } public override void Show(bool instant = false) { base.Show(instant); RefreshAll(); } public static PackPanel Get() { return instance; } } }