| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 | 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<string, EffectUI> _effectUIDic = new Dictionary<string, EffectUI>();        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<int>() { 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<ActivityGetYuanXiaoTargetView>(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<ActivityGetYuanXiaoView>(new object[] { cfg, activityID });        }        private void OnBtnShopClick()        {            int activityID = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.YuanXiao);            if (activityID == 0)            {                PromptController.Instance.ShowFloatTextPrompt("活动已结束");                return;            }            ViewManager.Show<StoreView>(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<ActivityGetYuanXiaoTaskView>();        }        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<MainUIView>(null, true);            ViewManager.DeleteViewStackCountDown("MainUIView");        }                private void InitUI()        {            _ui.m_list.visible = false;            _valueBarController.OnShown();            _valueBarController.UpdateList(new List<int>());        }    }}
 |