using System.Collections; using UnityEngine; using UI.ActivityGetYuanXiao; using FairyGUI; using System.Collections.Generic; using System.Threading.Tasks; using ET; namespace GFGGame { public class ActivityGetYuanXiaoEntryView : BaseView { private UI_ActivityGetYuanXiaoEntryUI _ui; private ValueBarController _valueBarController; private Dictionary _effectUIDic = new Dictionary(); private int _curLevel; public override void Dispose() { // Clear Effect foreach (var v in _effectUIDic) { EffectUIPool.Recycle(v.Value); } _effectUIDic.Clear(); if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } if (_ui != null) { _ui.Dispose(); } _ui = null; base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ActivityGetYuanXiaoEntryUI.PACKAGE_NAME; _ui = UI_ActivityGetYuanXiaoEntryUI.Create(); viewCom = _ui.target; isReturnView = true; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("hd_yx_bg"); _valueBarController = new ValueBarController(_ui.m_valueBar); _ui.m_list.itemRenderer = ListRenderer; _ui.m_btnStart.onClick.Add(OnBtnStartClick); _ui.m_btnTask.onClick.Add(OnBtnTaskClick); _ui.m_btnShop.onClick.Add(OnBtnShopClick); _ui.m_btnBack.onClick.Add(OnBtnBackClick); AddEffect(); } protected async override void OnShown() { base.OnShown(); InitUI(); var result = await ActivityGetYuanXiaoProxy.ReqGetActivityGameInfos(); if (!isShowing || !result) { return; } _ui.m_list.visible = true; _valueBarController.UpdateList(new List() { ConstItemID.YUANXIAO_REWARD, ConstItemID.YUANXIAO_GAME_CONSUME }); _ui.m_listShow.Play(); _curLevel = ActivityGetYuanXiaoDataManager.Instance.GetCurLevel(); _ui.m_list.numItems = ActivityGetYuanXiaoDataManager.Instance.gameinfoList.Count; _ui.m_list.selectedIndex = Mathf.Min(_curLevel, ActivityGetYuanXiaoDataManager.Instance.gameinfoList.Count - 1); AutoLocationCurLevel(); UpdateRedDots(); UpdateTime(null); Timers.inst.Remove(UpdateTime); Timers.inst.Add(1, 0, UpdateTime); } protected override void OnHide() { base.OnHide(); _valueBarController.OnHide(); Timers.inst.Remove(UpdateTime); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.ACTIVITY_GETYUANXIAO_START, StartGame); EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateRedDots); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.ACTIVITY_GETYUANXIAO_START, StartGame); EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateRedDots); } private void ListRenderer(int index, GObject item) { item.data = index; UI_level level = UI_level.Proxy(item); PickUpGame pickUpGame = PickUpGameArray.Instance.dataArray[index]; level.m_spendIcon.url = ResPathUtil.GetIconPath(ItemCfgArray.Instance.GetCfg(pickUpGame.comsumePassArr[0][0]).res, "png"); level.m_iconLevel.url = string.Format("ui://ActivityGetYuanXiao/yx_xg_{0}", index % 4 + 1); level.m_num.text = pickUpGame.comsumePassArr[0][1].ToString(); int stateIndex = 0; if (index > _curLevel) { stateIndex = 1; } else if(index < _curLevel) { stateIndex = 2; } level.m_c1.selectedIndex = stateIndex; UI_level.ProxyEnd(); } private void OnBtnStartClick() { int activityID = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.YuanXiao); if (activityID == 0) { PromptController.Instance.ShowFloatTextPrompt("活动已结束"); return; } if (_ui.m_list.selectedIndex > _curLevel) { PromptController.Instance.ShowFloatTextPrompt("请先通关前置关卡"); return; } if (_ui.m_list.selectedIndex < _curLevel) { PromptController.Instance.ShowFloatTextPrompt("关卡已通过"); return; } if (ActivityGetYuanXiaoDataManager.Instance.HaveNewLevelCanPlay() == false) { PromptController.Instance.ShowFloatTextPrompt("游园门票不足,请查看任务列表"); return; } PickUpGame cfg = PickUpGameArray.Instance.dataArray[_ui.m_list.selectedIndex]; ViewManager.Show(cfg); } private async void StartGame() { int activityID = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.YuanXiao); PickUpGame cfg = PickUpGameArray.Instance.dataArray[_ui.m_list.selectedIndex]; var result = await MiniGameProxy.ReqMiniGameStart(cfg.id, cfg.type, activityID); if (!result || !isShowing) return; ViewManager.Show(new object[] { cfg, activityID }); } private void OnBtnShopClick() { int activityID = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.YuanXiao); if (activityID == 0) { PromptController.Instance.ShowFloatTextPrompt("活动已结束"); return; } ViewManager.Show(new object[] { ConstStoreTabId.STORE_EXCHANGE, ConstStoreSubId.STORE_ACTIVITY_EXCHANGE }); } private void OnBtnTaskClick() { int activityID = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.YuanXiao); if (activityID == 0) { PromptController.Instance.ShowFloatTextPrompt("活动已结束"); return; } ViewManager.Show(); } private void UpdateRedDots() { bool canPlay = ActivityGetYuanXiaoDataManager.Instance.HaveNewLevelCanPlay(); for (int i = 0; i < _ui.m_list.numChildren; i++) { if (i == _curLevel) { RedDotController.Instance.SetComRedDot(_ui.m_list.GetChildAt(i).asCom, canPlay, "", -21, 29); } else { RedDotController.Instance.SetComRedDot(_ui.m_list.GetChildAt(i).asCom, false); } } RedDotController.Instance.SetComRedDot(_ui.m_btnTask, ActivityGetYuanXiaoDataManager.Instance.ShowTaskRedDots(TaskFuncType.YuanXiaoActivity), "", -25, 20); } private void AddEffect() { _effectUIDic.Add("YXJ_bg_tx", EffectUIPool.CreateEffectUI(_ui.m_bgEffect, "ui_Activity", "YXJ_bg_tx")); _effectUIDic.Add("YXJ_Button", EffectUIPool.CreateEffectUI(_ui.m_startBtnEffect, "ui_Activity", "YXJ_Button")); _effectUIDic.Add("YXJ_Middle", EffectUIPool.CreateEffectUI(_ui.m_yuanXiaoEffect, "ui_Activity", "YXJ_Middle")); _effectUIDic.Add("YXJ_Text", EffectUIPool.CreateEffectUI(_ui.m_titleTextEffect, "ui_Activity", "YXJ_Text")); _effectUIDic.Add("YXJ_Open_Down", EffectUIPool.CreateEffectUI(_ui.m_cloudEffect, "ui_Activity", "YXJ_Open_Down")); _effectUIDic.Add("YXJ_Open_Up", EffectUIPool.CreateEffectUI(_ui.m_leafEffect, "ui_Activity", "YXJ_Open_Up")); _effectUIDic.Add("RedPack_doubao_Loop_R", EffectUIPool.CreateEffectUI(_ui.m_doubaoEffect, "ui_Activity", "RedPack_doubao_Loop_R")); } private void AutoLocationCurLevel() { _ui.m_list.ScrollToView(Mathf.Min(_curLevel, ActivityGetYuanXiaoDataManager.Instance.gameinfoList.Count - 1)); } private void UpdateTime(object param) { long curTime = TimeHelper.ServerNow(); int activityID = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.YuanXiao); var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(activityID); if (activityInfo != null) { long endTime = activityInfo.EndTime; _ui.m_txtTime.text = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime); } else { //_ui.m_txtTime.text = "已结束"; //InitUI(); OnBtnBackClick(); } } private void OnBtnBackClick() { ViewManager.Show(null, true); ViewManager.DeleteViewStackCountDown("MainUIView"); } private void InitUI() { _ui.m_list.visible = false; _valueBarController.OnShown(); _valueBarController.UpdateList(new List()); } } }