using FairyGUI; using ET; using UI.NewYearRedEnvelope; using UI.CommonGame; using UnityEngine; using System; using System.Collections.Generic; namespace GFGGame { public class NewYearRedEnvelopeView : BaseWindow { private UI_NewYearRedEnvelopeUI _ui; private List _effectUIList = new List(); public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_NewYearRedEnvelopeUI.PACKAGE_NAME; _ui = UI_NewYearRedEnvelopeUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; //viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_btnOpen.onClick.Add(OnClickBtnOpen); _ui.m_btnDoubleGet.target.onClick.Add(OnClickBtnDoubleGet); } protected override void OnShown() { base.OnShown(); if (NewYearRedEnvelopeDataManager.Status == RedPacketStatus.None) { _ui.m_openType.selectedIndex = 0; _ui.m_titleImgType.selectedIndex = 0; RedDotController.Instance.SetComRedDot(_ui.m_btnOpen, true, "", -50, 100); RefreshTime(); } else { RefreshOpenView(); RefreshViewInfo(); if (NewYearRedEnvelopeDataManager.Status == RedPacketStatus.Open) againTimers(); } AddEffect(); Timers.inst.Add(1, 0, UpdateTime); } private void AddEffect() { _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_holderTitle, "ui_Activity", "RedPack_Top_Quad")); _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_holderAllBg, "ui_Activity", "RedPack_ALL_tx")); _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_holderAFu, "ui_Activity", "RedPack_AF_Anmation")); _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_holderOpenBtn, "ui_Activity", "RedPack_ONE_cirle")); _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_holderdoubao1, "ui_Activity", "RedPack_doubao_Loop")); _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_holderdoubao2, "ui_Activity", "RedPack_doubao_Loop_R")); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.NEW_YEAR_RED_ENVELOPE_INFO, RefreshBuySuccess); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.NEW_YEAR_RED_ENVELOPE_INFO, RefreshBuySuccess); } private void RefreshBuySuccess() { RefreshOpenView(); RefreshViewInfo(); } private void RefreshViewInfo() { _ui.m_btnDoubleGet.target.visible = NewYearRedEnvelopeDataManager.Status != RedPacketStatus.Double; } private void RefreshOpenView() { _ui.m_openType.selectedIndex = 1; var titleIndex = PlayerPrefs.GetString("NewYearRedEnvelopeRamdomInt"); _ui.m_titleImgType.selectedIndex = Convert.ToInt32(titleIndex); UI_ComItem item = UI_ComItem.Proxy(_ui.m_itemReward); ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(NewYearRedEnvelopeDataManager.ItemId); RarityIconController.UpdateRarityIcon(item.m_loaRarity, itemCfg.id, false); item.target.data = itemCfg; item.m_QualityType.selectedIndex = itemCfg.rarity - 1; item.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfg); item.m_txtCount.text = NewYearRedEnvelopeDataManager.ItemNum.ToString(); UI_ComItem.ProxyEnd(); _ui.m_textGetNum.text = NewYearRedEnvelopeDataManager.ItemNum.ToString(); } private void UpdateTime(object param) { RefreshTime(); } private void RefreshTime() { int actLimitId = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.NewYearRedPacket); ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(actLimitId); long time = TimeUtil.DateTimeToTimestamp(activityOpenCfg.endTime) - TimeHelper.ServerNow(); string strTime = TimeUtil.FormattingTimeTo_DDHHmm(time); _ui.m_txtTime.text = strTime; UI_Button1 btn = UI_Button1.Proxy(_ui.m_btnDoubleGet.target); btn.m_txtTime.text = strTime; UI_Button1.ProxyEnd(); } private void OnClickBtnDoubleGet(EventContext context) { BuyDoubleRedPacket(); } private async void BuyDoubleRedPacket() { int actRedPacketId = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.NewYearRedPacket); bool result = await NewYearRedEnvelopeSProxy.ReqDoubleRedPacket(actRedPacketId); if (result) { //RefreshOpenView(); //RefreshViewInfo(); } } private void OnClickBtnOpen(EventContext context) { ReqLeagueList(); } private async void ReqLeagueList() { int actRedPacketId = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.NewYearRedPacket); bool result = await NewYearRedEnvelopeSProxy.ReqOpenRedPacket(actRedPacketId); if (result) { RefreshOpenView(); againTimers(); RefreshViewInfo(); } } private void againTimers() { Timers.inst.Remove(UpdateOpenTime); Timers.inst.Remove(UpdateTextTime); _ui.m_txtGet.visible = false; _ui.m_imgTitle.visible = false; Timers.inst.Add(0.5f, 1, UpdateOpenTime); Timers.inst.Add(0.7f, 1, UpdateTextTime); } private void UpdateTextTime(object param) { _ui.m_txtGet.visible = true; } private void UpdateOpenTime(object param) { _ui.m_imgTitle.visible = true; } protected override void OnHide() { for (int i = 0; i < _effectUIList.Count; i++) { EffectUIPool.Recycle(_effectUIList[i]); } _effectUIList.Clear(); base.OnHide(); Timers.inst.Remove(UpdateTime); Timers.inst.Remove(UpdateOpenTime); Timers.inst.Remove(UpdateTextTime); } } }