using System.Collections; using System.Collections.Generic; using TcgEngine.Client; using UnityEngine; using UnityEngine.UI; namespace TcgEngine.UI { /// /// 简化卡包购买面板,只提供“买1包”和“买2包”按钮,保留API购买逻辑 /// public class PackBuyPanel : UIPanel { [Header("五连抽")] public Button buy_five_btn; // 购买1张按钮 public Text buy_five_cove; public Image five_coin_img; public Image five_crystal_img; [Header("十连抽")] public Button buy_ten_btn; // 购买2张按钮 public Text buy_ten_cove; public Image ten_coin_img; public Image ten_crystal_img; [Header("准备购买数据!")] private PackData pack; // 当前购买的卡包数据 protected override void Awake() { base.Awake(); if (HandPackArea.Get() != null) Hide(); if (PackPanel.Get() != null) Show(); buy_five_btn.onClick.AddListener(() => OnClickBuy(1)); buy_ten_btn.onClick.AddListener(() => OnClickBuy(2)); } private void OnDestroy() { buy_five_btn.onClick.RemoveAllListeners(); buy_ten_btn.onClick.RemoveAllListeners(); } /// /// id传输 /// /// 卡牌id public void SetPack(string packId) { pack = PackData.Get(packId); SetBuyMessage(); } public void SetPack(PackData pack) { this.pack = pack; Show(); } private void OnClickBuy(int quantity) { BuyPackApi(quantity); } private void SetBuyMessage() { // 设置图标 switch (pack.tradeCurrency) { case TradeCurrency.Coin: five_coin_img.gameObject.SetActive(true); ten_coin_img.gameObject.SetActive(true); five_crystal_img.gameObject.SetActive(false); ten_crystal_img.gameObject.SetActive(false); break; case TradeCurrency.Crystal: five_coin_img.gameObject.SetActive(false); ten_coin_img.gameObject.SetActive(false); five_crystal_img.gameObject.SetActive(true); ten_crystal_img.gameObject.SetActive(true); break; } buy_five_cove.text = pack.cost.ToString(); buy_ten_cove.text = (pack.cost * 2).ToString(); } private async void BuyPackApi(int quantity) { if (pack == null || quantity <= 0) return; BuyPackRequest req = new BuyPackRequest { pack = pack.id, quantity = quantity }; string url = ApiClient.ServerURL + "/users/packs/buy/"; string jdata = ApiTool.ToJson(req); WebResponse res = await ApiClient.Get().SendPostRequest(url, jdata); if (res.success) { if (PackPanel.Get() != null) { PackPanel.Get()?.ReloadUserPack(); PackPanel.Get()?.RefreshCurrency(); } if (HandPackArea.Get() != null) { HandPackArea.Get().LoadPacks(); } } else { Debug.LogError(res.error); } } } }