using UnityEngine; using UnityEngine.UI; public class HeroReturnShopCell : MonoBehaviour { [SerializeField] Transform saleRect; [SerializeField] Text saleText; [SerializeField] Text itemName; [SerializeField] ItemCell itemCell; [SerializeField] Text limitText; [SerializeField] Text lockTip; [SerializeField] Transform priceRect; [SerializeField] Image priceIcon; [SerializeField] Text priceText; [SerializeField] Transform priceRect1;//居中位置的价格 [SerializeField] Image priceIcon1; [SerializeField] Text priceText1; [SerializeField] Transform salePriceRect; [SerializeField] Text salePriceText; [SerializeField] Button buyButton; [SerializeField] Image freeRedPoint; [SerializeField] Text freeText; [SerializeField] Image exclusiveImage;//专属 [SerializeField] Image sellOutImage;//售罄 HeroReturnManager manager => HeroReturnManager.Instance; public void Display(int index) { var act = manager.GetOperationHeroAppearInfo(); if (act == null) return; var config = ActHeroAppearConfig.Get(act.CfgID); if (config == null) return; if (!StoreModel.Instance.storeTypeDict.TryGetValue(config.ExShopType, out var list)) return; var storeData = list[index]; int shopID = storeData.shopId; var itemID = storeData.storeConfig.ItemID; var itemCount = storeData.storeConfig.ItemCnt; exclusiveImage.SetActive(storeData.storeConfig.IsExclusive == 1); itemCell.Init(new ItemCellModel(itemID, false, itemCount)); itemCell.button.AddListener(() => { ItemTipUtility.Show(itemID); }); var itemConfig = ItemConfig.Get(itemID); itemName.text = itemConfig.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; buyButton.AddListener(() => { BuyGoods(shopID); }); //0可购买 1已售罄 2免费 3未解锁 var state = StoreModel.Instance.GetShopIDState(shopID); sellOutImage.SetActive(state == 1); freeRedPoint.SetActive(state == 2); lockTip.text = state == 2 ? Language.Get("storename10", storeData.storeConfig.UnlockValue) : string.Empty; priceRect.SetActive(state != 2 && storeData.storeConfig.MoneyOriginal != 0); priceRect1.SetActive(state != 2 && storeData.storeConfig.MoneyOriginal == 0); freeText.SetActive(state == 2); salePriceRect.SetActive(state != 2 && storeData.storeConfig.MoneyOriginal != 0); priceText.text = storeData.storeConfig.MoneyNum.ToString(); priceText1.text = storeData.storeConfig.MoneyNum.ToString(); if (storeData.storeConfig.MoneyType <= 0) { priceIcon.SetItemSprite(storeData.storeConfig.CostItemID); priceIcon1.SetItemSprite(storeData.storeConfig.CostItemID); } else { priceIcon.SetIconWithMoneyType(storeData.storeConfig.MoneyType); priceIcon1.SetIconWithMoneyType(storeData.storeConfig.MoneyType); } salePriceText.text = storeData.storeConfig.MoneyOriginal.ToString(); } void BuyGoods(int shopID) { var state = StoreModel.Instance.GetShopIDState(shopID); if (state == 1) return; if (state == 2) { StoreModel.Instance.SendBuyShopItem(StoreConfig.Get(shopID), 1); } else { StoreModel.Instance.buyShopID = shopID; UIManager.Instance.OpenWindow(); } } }