using System.Collections.Generic; using UnityEngine; public class TimeRushGiftCell : MonoBehaviour { [SerializeField] TextEx titleText; [SerializeField] ItemCell[] itemCells; [SerializeField] ButtonEx buyButton; [SerializeField] ImageEx buyImage; [SerializeField] TextEx buyText; [SerializeField] TextEx buyText1; [SerializeField] ImageEx moneyIconImage; [SerializeField] TextEx limitCountText; [SerializeField] ImageEx redImage; TimeRushManager manager { get { return TimeRushManager.Instance; } } StoreModel storeModel { get { return StoreModel.Instance; } } public void Display(int index, List giftItems) { if (giftItems.IsNullOrEmpty() || index < 0 || index >= giftItems.Count) return; TimeRushGiftItem item = giftItems[index]; if (item.type == 0) { DisplayStore(item.id); return; } DisplayCTG(item.id); } private void DisplayCTG(int ctgId) { redImage.SetActive(false); buyText.SetActive(true); buyText1.SetActive(false); moneyIconImage.SetActive(false); if (!RechargeManager.Instance.TryGetOrderInfo(ctgId, out var orderConfig)) return; if (!RechargeManager.Instance.TryGetRechargeCount(ctgId, out var rechargeCount)) return; if (!CTGConfig.HasKey(ctgId)) return; if (!RechargeManager.Instance.TryGetRechargeItem(ctgId, out var rechargeItemList)) return; CTGConfig config = CTGConfig.Get(ctgId); bool isCanBuy = manager.IsCanBuyCTG(ctgId); titleText.text = config.Title; buyImage.SetSprite(isCanBuy ? "DailySpecialsBuy1" : "DailySpecialsBuy2"); buyText.text = !isCanBuy ? Language.Get("storename11") : Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(orderConfig.PayRMBNum)); limitCountText.SetActive(true); limitCountText.text = Language.Get("TimeRush07", UIHelper.AppendColor(rechargeCount.totalCount >= config.TotalBuyCount ? TextColType.Red : TextColType.LightGreen, Mathf.Max(0, config.TotalBuyCount - rechargeCount.totalCount).ToString())); buyButton.interactable = isCanBuy; buyButton.SetListener(() => { RechargeManager.Instance.CTG(ctgId); }); for (int i = 0; i < itemCells.Length; i++) { var itemBaisc = itemCells[i]; if (i < rechargeItemList.Count) { var itemInfo = rechargeItemList[i]; itemBaisc.SetActive(true); itemBaisc.Init(new ItemCellModel((int)itemInfo.id, false, itemInfo.countEx)); itemBaisc.button.AddListener(() => { ItemTipUtility.Show((int)itemInfo.id); }); } else { itemBaisc.SetActive(false); } } } private void DisplayStore(int id) { if (!StoreConfig.HasKey(id)) return; StoreConfig storeConfig = StoreConfig.Get(id); int remainNum; storeModel.TryGetIsSellOut(storeConfig, out remainNum); bool isFree = manager.IsFree(id); titleText.text = storeConfig.Name; limitCountText.SetActive(!isFree); limitCountText.text = Language.Get("TimeRush08", UIHelper.AppendColor(remainNum == 0 ? TextColType.Red : TextColType.LightGreen, Mathf.Max(0, remainNum).ToString(), true)); bool isCanBuy = manager.IsCanBuyShop(id); redImage.SetActive(isFree && isCanBuy); buyText.SetActive(isFree || !isCanBuy); buyText.text = isFree ? Language.Get("L1127") : Language.Get("storename11"); buyText1.SetActive(!isFree && isCanBuy); buyText1.text = UIHelper.GetMoneyFormat(storeConfig.MoneyNum); moneyIconImage.SetActive(!isFree && isCanBuy); moneyIconImage.SetIconWithMoneyType(1); buyImage.SetSprite(isCanBuy ? "DailySpecialsBuy1" : "DailySpecialsBuy2"); buyButton.interactable = isCanBuy; buyButton.SetListener(() => { storeModel.SendBuyShopItemWithPopCheck(storeConfig, 1, (int)BuyStoreItemCheckType.ActGift); }); var items = storeModel.GetShopItemlistByIndex(storeConfig); for (int i = 0; i < itemCells.Length; i++) { var itemBaisc = itemCells[i]; if (i < items.Count) { var itemInfo = items[i]; itemBaisc.SetActive(true); itemBaisc.Init(new ItemCellModel(itemInfo.itemId, false, itemInfo.count)); itemBaisc.button.AddListener(() => { ItemTipUtility.Show(itemInfo.itemId); }); } else { itemBaisc.SetActive(false); } } } } public class TimeRushGiftItem { public int type;//0 商店id 1 充值id public int id; }