Files

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;
}
}
}