using ET; using FairyGUI; using System.Collections.Generic; using UI.ActivityThemeLuckyBox; using UnityEngine; namespace GFGGame { public class ActivityThemeLuckyBoxView : BaseWindow { private UI_ActivityThemeLuckyBoxUI _ui; private ActivityOpenCfg _activityCfg; private int _activityId; private Dictionary _effectUIDic = new Dictionary(); public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ActivityThemeLuckyBoxUI.PACKAGE_NAME; _ui = UI_ActivityThemeLuckyBoxUI.Create(); this.viewCom = _ui.target; isfullScreen = true; isReturnView = true; _ui.m_btnBack.onClick.Add(OnBtnBackClick); _ui.m_btnTask.target.onClick.Add(OnBtnTaskClick); _ui.m_btnChapter.target.onClick.Add(OnBtnChapterClick); _ui.m_btnLuckyBox.target.onClick.Add(OnBtnLuckyBoxClick); _ui.m_btnShop.target.onClick.Add(OnBtnShopClick); PreloadSuitModel(); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateRedDot); } protected override void OnShown() { base.OnShown(); bool showTask = this.viewData == null ? false : (bool)this.viewData; if (showTask) { OnBtnTaskClick(); } _activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitLuckyBox); // 界面根据ID改变 _ui.m_c1.SetSelectedPage(_activityId.ToString()); // 活动主界面入场动画 _ui.target.GetTransition("In_" + _activityId.ToString())?.Play(); _activityCfg = ActivityOpenCfgArray.Instance.GetCfg(_activityId); _ui.m_loaBg.url = ResPathUtil.GetBgImgPath(_activityCfg.res); if(_activityId == 5) { _ui.m_card.target.visible = true; float width = 2560; float height = 1920; float proportion = width / height; float targetWidth = proportion * _ui.target.height; _ui.m_card.m_ComCardImgRes.target.width = targetWidth; _ui.m_card.m_ComCardImgRes.m_loaCard.url = ResPathUtil.GetBgImgPath("bg_jfyl","jpg"); } else if (_activityId == 7) { _ui.m_card.target.visible = true; float width = 2560; float height = 1920; float proportion = width / height; float targetWidth = proportion * _ui.target.height; _ui.m_card.m_ComCardImgRes.target.width = targetWidth; _ui.m_card.m_ComCardImgRes.m_loaCard.url = ResPathUtil.GetBgImgPath("bg_ryth"); } else { _ui.m_card.target.visible = false; } _ui.m_btnTask.target.visible = false; UpdateEffect(); UpdateRedDot(); UpdateTime(); Timers.inst.Add(1, 0, UpdateTime); } protected override void OnHide() { base.OnHide(); Timers.inst.Remove(UpdateTime); // Clear Effect foreach (var v in _effectUIDic) { EffectUIPool.Recycle(v.Value); } _effectUIDic.Clear(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateRedDot); } private void OnBtnBackClick() { Hide(); } private void OnBtnTaskClick() { _activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitLuckyBox); if (_activityId <= 0) { PromptController.Instance.ShowFloatTextPrompt("活动已结束"); return; } ViewManager.Show(_activityId); } private void OnBtnChapterClick() { _activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitLuckyBox); if (_activityId <= 0) { PromptController.Instance.ShowFloatTextPrompt("活动已结束"); return; } int type = _activityCfg.type; if(type == 1) { // 剧情+战斗混合 ViewManager.Show(); } else { // 纯战斗 ViewManager.Show(_activityId); } } private void OnBtnLuckyBoxClick() { _activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitLuckyBox); if (_activityId <= 0) { PromptController.Instance.ShowFloatTextPrompt("活动已结束"); return; } long endTime = TimeUtil.DateTimeToTimestamp(_activityCfg.endTime); long curTime = TimeHelper.ServerNow(); if (endTime < curTime) return; ViewManager.Show(ConstLimitTimeActivityType.ActLimitLuckyBox); } private void OnBtnShopClick() { _activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitLuckyBox); if (_activityId <= 0) { PromptController.Instance.ShowFloatTextPrompt("活动已结束"); return; } ViewManager.Show(new object[] { ConstStoreTabId.STORE_EXCHANGE, ConstStoreSubId.STORE_GIFT_BAG_ACTIVITY }); } private void UpdateTime(object param = null) { long endTime = TimeUtil.DateTimeToTimestamp(_activityCfg.endTime); long curTime = TimeHelper.ServerNow(); if (endTime < curTime) { Timers.inst.Remove(UpdateTime); return; } TimeUtil.FormattingTime(curTime, endTime, out int num, out string str); string timeStr = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime); _ui.m_txtTime.text = timeStr; // 检测是否有活动专属时间字体 GObject activityTimeText = _ui.target.GetChild("txtTime_" + _activityId); if (activityTimeText != null) { ((GTextField)activityTimeText).text = timeStr; } } private void UpdateRedDot() { RedDotController.Instance.SetComRedDot(_ui.m_btnLuckyBox.target , RedDotDataManager.Instance.GetMeiRiTeHuiRed() || RedDotDataManager.Instance.GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitLuckyBox) || RedDotDataManager.Instance.GetGiftBagRewardRed(), "", -70, 45); RedDotController.Instance.SetComRedDot(_ui.m_btnTask.target, RedDotDataManager.Instance.GetActLuckyBoxTaskdRed()); int type = _activityCfg.type; // 剧情战斗混合 if(type == 1) { RedDotController.Instance.SetComRedDot(_ui.m_btnChapter.target, RedDotDataManager.Instance.GetActLuckyBoxStudioFilingRed(),"",-60,60); } else { RedDotController.Instance.SetComRedDot(_ui.m_btnChapter.target, RedDotDataManager.Instance.CheckActivityLuckyBoxCanChallenge(300, _activityId)); } } private void UpdateEffect() { // 2表示 阳春花蔓 if (_activityId == 2) { // Effect _effectUIDic.Add("All_tx", EffectUIPool.CreateEffectUI(_ui.m_bgEffectHolder, "ui_Activity/New_CK_Flower", "All_tx")); _effectUIDic.Add("L", EffectUIPool.CreateEffectUI(_ui.m_btnLuckyBox.m_effectHolder, "ui_Activity/New_CK_Flower", "L")); _effectUIDic.Add("R", EffectUIPool.CreateEffectUI(_ui.m_btnChapter.m_effectHolder, "ui_Activity/New_CK_Flower", "R")); } // 3表示 水月镜花 else if(_activityId == 4) { _effectUIDic.Add("All_tx", EffectUIPool.CreateEffectUI(_ui.m_bgEffectHolder, "ui_Activity", "SYJHbgtx")); _effectUIDic.Add("L", EffectUIPool.CreateEffectUI(_ui.m_btnLuckyBox.m_effectHolder, "ui_Activity", "SYJH_icon_tx_L")); _effectUIDic.Add("R", EffectUIPool.CreateEffectUI(_ui.m_btnChapter.m_effectHolder, "ui_Activity", "SYJH_icon_tx_R")); } else { _effectUIDic.Add("All_tx", EffectUIPool.CreateEffectUI(_ui.m_bgEffectHolder, "ui_Activity/JFYL_All_tx", "JFYL_All_tx")); _effectUIDic.Add("L", EffectUIPool.CreateEffectUI(_ui.m_btnLuckyBox.m_effectHolder, "ui_Activity/JFYL_Button_L", "JFYL_Button_L")); _effectUIDic.Add("R", EffectUIPool.CreateEffectUI(_ui.m_btnChapter.m_effectHolder, "ui_Activity/JFYL_Button_R", "JFYL_Button_R")); _effectUIDic.Add("textEff", EffectUIPool.CreateEffectUI(_ui.m_textEffect, "ui_Activity/JFYL_Text", "JFYL_Text")); } } private void PreloadSuitModel() { int[] suitIDList = ActivityOpenCfgArray.Instance.GetCfg(2).params2Arr; for (int i = 0; i < suitIDList.Length; i++) { SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitIDList[i]); ResType resType = ResType.Sprite; if (suitCfg.aniRes != "") resType = ResType.Animation; PreDownloadManager.Instance.PreDownloadSuitRes(suitIDList[i], resType, new int[] { ConstDressUpItemType.BEI_JING }, true); } } } }