using System; using UnityEngine; using UnityEngine.UI; public class DailySpecialsBaseWin : FunctionsBaseWin { [SerializeField] ImageEx imgBG; [SerializeField] ImageEx imgFan0; [SerializeField] ImageEx imgFanOther; [SerializeField] ImageEx[] imgIHs; [SerializeField] ImageEx[] imgTitles; [SerializeField] Transform[] transMoneys; [SerializeField] ItemCell freeItem; [SerializeField] ImageEx imgFreeHave; [SerializeField] Image imgFreeRed; [SerializeField] RotationTween rotationTween; [SerializeField] ImageEx imgTimeBG1; [SerializeField] TextEx txtTime1; [SerializeField] ImageEx imgTimeBG2; [SerializeField] TextEx txtTime2; DailySpecialsManager manager { get { return DailySpecialsManager.Instance; } } StoreModel storeModel { get { return StoreModel.Instance; } } protected override void OnPreOpen() { GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; storeModel.RefreshBuyShopLimitEvent += OnRefreshBuyShopLimitEvent; InitRedpoint(); tabButtons[functionOrder].SelectBtn(); OpenSubUIByTabIndex(); } protected override void OnPreClose() { GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; storeModel.RefreshBuyShopLimitEvent -= OnRefreshBuyShopLimitEvent; } private void OnRefreshBuyShopLimitEvent() { DisplayFreeItem(functionOrder); } private void OnSecondEvent() { DisplayTime(functionOrder); } public void InitRedpoint() { for (int i = 0; i < tabButtons.Length; i++) { if (!Enum.IsDefined(typeof(DailySpecialsTabEnum), functionOrder)) { return; } tabButtons[i].redpoint.redpointId = manager.GetTabRedponitId(i); } } public void DisplayTime(int functionOrder) { imgTimeBG1.SetActive(functionOrder == 0 || functionOrder == 1); imgTimeBG2.SetActive(functionOrder == 2 || functionOrder == 3); txtTime1.text = Language.Get("PhantasmPavilion10", functionOrder == 3 ? manager.GetCountdownToWeekEnd() : manager.GetCountdownToNextDay()); txtTime2.text = Language.Get("PhantasmPavilion10", functionOrder == 3 ? manager.GetCountdownToWeekEnd() : manager.GetCountdownToNextDay()); } public void DisplayFan(int functionOrder) { imgFan0.SetActive(functionOrder == 0); imgFanOther.SetActive(functionOrder != 0); imgFanOther.SetSprite(StringUtility.Concat("DailySpecialsFan", functionOrder.ToString())); } public void DisplayIH(int functionOrder) { SetActiveByIndex(imgIHs, functionOrder); } public void DisplayTitle(int functionOrder) { SetActiveByIndex(imgTitles, functionOrder); } public void DisplayMoney(int functionOrder) { for (int i = 0; i < transMoneys.Length; i++) { transMoneys[i].SetActive(i == functionOrder); } } public void DisplayBG(int functionOrder) { imgBG.SetSprite(functionOrder == 0 ? "DailySpecialsBG1" : "DailySpecialsBG2"); } public void DisplayFreeItem(int functionOrder) { int itemId = 0; int itemCount = 0; int shopId = manager.GetShopIdByFunctionOrder(functionOrder); if (!StoreConfig.HasKey(shopId)) { freeItem.SetActive(false); return; } freeItem.SetActive(true); StoreConfig storeConfig = StoreConfig.Get(shopId); itemId = storeConfig.ItemID; itemCount = storeConfig.ItemCnt; bool isReceived = manager.IsReceived(shopId); freeItem.Init(new ItemCellModel(itemId, false, itemCount)); freeItem.button.SetListener(() => { if (!isReceived) { storeModel.SendBuyShopItem(storeConfig, 1); } else { ItemTipUtility.Show(itemId); } }); imgFreeHave.SetActive(isReceived); imgFreeRed.SetActive(!isReceived); if (!isReceived) { rotationTween.Play(); } else { rotationTween.Stop(); rotationTween.SetStartState(); } } // 通用方法:激活指定索引的图片 private void SetActiveByIndex(ImageEx[] images, int targetIndex) { for (int i = 0; i < images.Length; i++) { images[i].SetActive(i == targetIndex); } } protected override void OpenSubUIByTabIndex() { DisplayBG(functionOrder); DisplayFan(functionOrder); DisplayIH(functionOrder); DisplayTitle(functionOrder); DisplayFreeItem(functionOrder); DisplayTime(functionOrder); DisplayMoney(functionOrder); switch (functionOrder) { case 0: // 每日特惠 currentSubUI = UIManager.Instance.OpenWindow(); break; case 1: // 特惠商城 StoreModel.Instance.selectStoreFuncType = StoreFunc.SpecialStore; currentSubUI = UIManager.Instance.OpenWindow(); break; case 2: // 每日礼包 currentSubUI = UIManager.Instance.OpenWindow(); break; case 3: // 每周礼包 currentSubUI = UIManager.Instance.OpenWindow(); break; default: Debug.LogWarning("未知的标签索引: " + functionOrder); break; } } }