using System.Collections.Generic; using UnityEngine; public class TimeRushGiftCell : MonoBehaviour { [SerializeField] ImageEx vipImage; [SerializeField] TextEx vipText; [SerializeField] ImageEx rateImage; [SerializeField] TextEx rateText; [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); rateImage.SetActive(true); 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); vipImage.SetActive(config.VipLevel > 0); vipText.text = config.VipLevel > 0 ? Language.Get($"VipLevelInfo{config.VipLevel}") : string.Empty; rateText.text = Language.Get("DailySpecials07", config.Percentage); 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.PayRMBNumOnSale)); 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(() => { if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.PrivilegeCard) && config.VipLevel == 1 && !InvestModel.Instance.IsInvested(InvestModel.monthCardType)) { SysNotifyMgr.Instance.ShowTip("MinggeAuto5"); UIManager.Instance.OpenWindow(); return; } if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.PrivilegeCard) && config.VipLevel == 2 && !InvestModel.Instance.IsInvested(InvestModel.foreverCardType)) { SysNotifyMgr.Instance.ShowTip("MinggeAuto7"); UIManager.Instance.OpenWindow(); return; } 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) { rateImage.SetActive(false); vipImage.SetActive(false); 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; }