using asap.core; using cfg; using game; using GameCore; using System; using System.Collections.Generic; using TMPro; using tysdk; using UnityEngine; using UnityEngine.UI; public class ItemShopSlot : MonoBehaviour { #region Field&&Property [SerializeField] private Button btn_buy; [SerializeField] private RewardItemNew rewardItem; [SerializeField] private GameObject go_soldOut; [SerializeField] private Transform tran_tag; [SerializeField] TMP_Text txt_itemName; private PlayerShopData.ItemShopData _data; #endregion private void Start() { } #region Function public void SetData(PlayerShopData.ItemShopData data) { gameObject.SetActive(true); _data = data; if (_data.Record.ItemID == 1002) { _data.Count = (int)GContext.container.Resolve().GetExtraCoinMag(_data.Count); } RefreshView(); } public void RefreshView() { rewardItem.SetData(new ItemData { id = _data.Record.ItemID, count = _data.Count, }); rewardItem.transform.Find("text_num").GetComponent().text = "x" + ConvertTools.GetNumberString(_data.Count); txt_itemName.text = LocalizationMgr.GetText(GContext.container.Resolve().TbItem.DataMap[_data.Record.ItemID].Name_l10n_key); for (int i = 0; i < tran_tag.childCount; i++) { tran_tag.GetChild(i).gameObject.SetActive(false); } // go_redPoint.SetActive(false); btn_buy.transform.Find("Ani_Container/p_text").gameObject.SetActive(false); if (_data.Record.hasBought == 0) { // GContext.container.Resolve().SetImageSprite(img_light, ( $"bg_shop_resource_item_{quality + 1}" )); //Not Boudght go_soldOut.SetActive(false); btn_buy.transform.parent.gameObject.SetActive(true); btn_buy.onClick.AddListener(OnBuy); //Cost var cost = _data.GetDiscountDiamondCost(); //Not Free btn_buy.transform.Find("Ani_Container/p_text").gameObject.SetActive(true); btn_buy.transform.Find("Ani_Container/p_text").GetComponent().text = ConvertTools.GetNumberString(cost); //Discount var discount = _data.Record.Discount; var tagJudgeList = GContext.container.Resolve().TbStoreConfig.Get(1).PriceTag; if (!Mathf.Approximately(discount, 1f)) { var lastDiscount = 0f; var index = 0; foreach (var tagjudge in tagJudgeList) { if (discount * 10f > lastDiscount && discount * 10f <= tagjudge) { break; } index++; lastDiscount = tagjudge; } if (tran_tag.childCount <= index) Debug.LogError($"[ItemShopSlot::RefreshView] tagJudge {index} exceeds tagsCount {tran_tag.childCount}"); var tag = tran_tag.GetChild(index); tag.gameObject.SetActive(true); tag.GetChild(0).GetComponent().text = ConvertTools.GetNumberString3(discount); } } else { //Has Bought // img_light.enabled = false; go_soldOut.SetActive(true); btn_buy.transform.parent.gameObject.SetActive(false); btn_buy.onClick.RemoveAllListeners(); // cg_rewardItem.alpha = 0.6f; } } private void OnBuy() { if (_data.Record.hasBought == 0) { var cost = _data.GetDiscountDiamondCost(); if (cost == 0) { //Free var itemData = new ItemData { id = _data.Record.ItemID, count = _data.Count }; itemData.curCount = (ulong)GContext.container.Resolve().GetItemCount(_data.Record.ItemID); GContext.container.Resolve().AddItem(itemData); GContext.container.Resolve().SetItemShopSlotBought(_data.ItemShopID); GContext.Publish(new ShowData(new List { itemData }, RewardType.NormalOne)); GContext.Publish(new ShowData()); RefreshView(); } else { var curDiamond = GContext.container.Resolve().diamond; //Not Free if (curDiamond >= cost) { var itemData = new ItemData { id = _data.Record.ItemID, count = _data.Count }; itemData.curCount = (ulong)GContext.container.Resolve().GetItemCount(_data.Record.ItemID); GContext.container.Resolve().AddDiamond(-cost); GContext.container.Resolve().SetItemShopSlotBought(_data.ItemShopID); GContext.Publish(new ShowData(new List { itemData }, RewardType.NormalOne)); GContext.container.Resolve().AddItem(itemData); GContext.Publish(new ShowData()); #if AGG using (var e = GEvent.GameEvent("resource_shop")) { e.AddContent("cost_diamond_count", cost) .AddContent("change_type", 2) .AddContent("change_num", _data.Count) .AddContent("item_id", _data.Record.ItemID); } #endif RefreshView(); } else { ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_59")); _ = UIManager.Instance.ShowUI(UITypes.LackOfResourceConfirmPopupPanel); } } } } #endregion }