using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class StoreCell : MonoBehaviour { [SerializeField] Transform saleRect; [SerializeField] Text saleText; [SerializeField] Text itemName; [SerializeField] ItemCell itemCell; [SerializeField] Text limitText; [SerializeField] Text lockTip; [SerializeField] Image priceIcon; [SerializeField] Text priceText; [SerializeField] Text salePriceText; [SerializeField] Button buyButton; //免费 和 已售罄的显示 同一个按钮 [SerializeField] Button freeButton; [SerializeField] Image freeRedPoint; [SerializeField] Text freeText; public void Display(int index) { if (!StoreModel.Instance.storeTypeDict.ContainsKey((int)StoreModel.Instance.selectStoreFuncType)) { return; } var list = StoreModel.Instance.storeTypeDict[(int)StoreModel.Instance.selectStoreFuncType]; var storeData = list[index]; int shopID = storeData.shopId; var itemID = storeData.storeConfig.ItemID; var itemCount = storeData.storeConfig.ItemCnt; itemCell.Init(new ItemCellModel(itemID, false, itemCount)); itemCell.button.AddListener(() => { ItemTipUtility.Show(itemID); }); var config = ItemConfig.Get(itemID); itemName.text = config.ItemName; //折扣 if (storeData.storeConfig.MoneyOriginal != 0) { saleRect.SetActive(true); saleText.text = Language.Get("storename5", (storeData.storeConfig.MoneyNum*10 / (float)storeData.storeConfig.MoneyOriginal).ToString("0.#")); } else { saleRect.SetActive(false); } var buyCnt = StoreModel.Instance.GetShopLimitBuyCount(shopID); string limitStr = ""; if (storeData.storeConfig.MoneyNum == 0) { //免费 limitStr = ""; } else if (storeData.storeConfig.ResetType == 0) { //限购 limitStr = storeData.storeConfig.LimitCnt > 0 ? Language.Get("storename8", storeData.storeConfig.LimitCnt - buyCnt, storeData.storeConfig.LimitCnt) : ""; } else if (storeData.storeConfig.ResetType == 1) { //每日限购 limitStr = Language.Get("storename6", storeData.storeConfig.LimitCnt - buyCnt, storeData.storeConfig.LimitCnt); } else if (storeData.storeConfig.ResetType == 2) { //每周限购 limitStr = Language.Get("storename7", storeData.storeConfig.LimitCnt - buyCnt, storeData.storeConfig.LimitCnt); } limitText.text = buyCnt >= storeData.storeConfig.LimitCnt ? UIHelper.AppendColor(TextColType.Gray, limitStr) : limitStr; //0可购买 1已售罄 2免费 3未解锁 var state = StoreModel.Instance.GetShopIDState(shopID); if (state == 0) { buyButton.SetActive(true); freeButton.SetActive(false); lockTip.text = ""; priceIcon.SetIconWithMoneyType(storeData.storeConfig.MoneyType); priceText.text = storeData.storeConfig.MoneyNum.ToString(); if (storeData.storeConfig.MoneyOriginal == 0) { salePriceText.SetActive(false); } else { salePriceText.SetActive(true); salePriceText.text = storeData.storeConfig.MoneyOriginal.ToString(); } buyButton.AddListener(()=> { BuyGoods(shopID); }); } else if (state == 1) { buyButton.SetActive(false); freeButton.SetActive(true); freeText.text = Language.Get("storename11"); freeButton.SetInteractable(false); lockTip.text = ""; freeRedPoint.SetActive(false); } else if (state == 2) { buyButton.SetActive(false); freeButton.SetActive(true); freeText.text = Language.Get("L1127"); freeButton.SetInteractable(true); lockTip.text = ""; freeRedPoint.SetActive(true); freeButton.AddListener(()=> { BuyGoods(shopID); }); } else if (state == 3) { buyButton.SetActive(false); freeButton.SetActive(false); lockTip.text = Language.Get("storename10", storeData.storeConfig.UnlockValue); } } void BuyGoods(int shopID) { var state = StoreModel.Instance.GetShopIDState(shopID); if (state == 2) { StoreModel.Instance.SendBuyShopItem(StoreConfig.Get(shopID), 1); } else { StoreModel.Instance.buyShopID = shopID; UIManager.Instance.OpenWindow(); } } }