175 lines
4.8 KiB
C#
175 lines
4.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace TcgEngine.UI
|
|
{
|
|
/// <summary>
|
|
/// 卡包面板与收藏相似,但会显示您拥有的所有卡包以及所有可用卡包
|
|
/// </summary>
|
|
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 Toggle standard_toggle;
|
|
public Toggle elite_toggle;
|
|
public PackData preparePack;
|
|
public PackBuyPanel packBuyPanel;
|
|
|
|
private List<GameObject> pack_list = new List<GameObject>();
|
|
|
|
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();
|
|
|
|
if (standard_toggle != null)
|
|
standard_toggle.onValueChanged.AddListener(OnToggleStandard);
|
|
|
|
if (elite_toggle != null)
|
|
elite_toggle.onValueChanged.AddListener(OnToggleElite);
|
|
|
|
// 默认设置卡组
|
|
OnToggleStandard(standard_toggle.isOn);
|
|
}
|
|
|
|
protected override void Update()
|
|
{
|
|
base.Update();
|
|
|
|
}
|
|
|
|
public async void ReloadUserPack()
|
|
{
|
|
await Authenticator.Get().LoadUserData();
|
|
RefreshPacks();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 刷新全部
|
|
/// </summary>
|
|
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<PackUI>();
|
|
pack_ui.SetPack(pack, udata.GetPackQuantity(pack.id));
|
|
pack_ui.onClick += OnClickPack;
|
|
pack_ui.onClickRight += OnClickPack;
|
|
pack_list.Add(nPack);
|
|
}
|
|
}
|
|
|
|
// 刷新新手卡组
|
|
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();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 刷新货币
|
|
/// </summary>
|
|
public void RefreshCurrency()
|
|
{
|
|
coin.text = MainMenu.Get().credits_txt.text;
|
|
crystal.text = MainMenu.Get().crystalText.text;
|
|
}
|
|
|
|
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");
|
|
}
|
|
|
|
private void OnToggleStandard(bool value)
|
|
{
|
|
if (value)
|
|
{
|
|
// 设置当前卡组为标准卡组
|
|
preparePack = PackData.Get("standard");
|
|
SetBuyPack("standard");
|
|
Debug.Log("当前选择标准卡组");
|
|
}
|
|
}
|
|
private void OnToggleElite(bool value)
|
|
{
|
|
if (value)
|
|
{
|
|
// 设置当前卡组为精英卡组
|
|
preparePack = PackData.Get("elite");
|
|
SetBuyPack("elite");
|
|
Debug.Log("当前选择精英卡组");
|
|
}
|
|
}
|
|
|
|
private void SetBuyPack(string packId)
|
|
{
|
|
packBuyPanel.SetPack(packId);
|
|
PlayerPrefs.SetString("pack_id", packId);
|
|
}
|
|
|
|
|
|
|
|
public override void Show(bool instant = false)
|
|
{
|
|
base.Show(instant);
|
|
RefreshAll();
|
|
}
|
|
|
|
public static PackPanel Get()
|
|
{
|
|
return instance;
|
|
}
|
|
}
|
|
} |