| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 | using System.Collections.Generic;using ET;using FairyGUI;using UI.CommonGame;using UI.Task;using UnityEngine;namespace GFGGame{    public class CombTaskView : BaseWindow    {        private UI_CombTaskUI _ui;        private List<TaskCfg> _cfgs;        private int taskType = TaskType.Daily;        public override void Dispose()        {            if (_ui != null)            {                _ui.Dispose();                _ui = null;            }            base.Dispose();        }        protected override void OnInit()        {            base.OnInit();            packageName = UI_CombTaskUI.PACKAGE_NAME;            _ui = UI_CombTaskUI.Create();            viewCom = _ui.target;            isfullScreen = true;            clickBlankToClose = false;            _ui.m_c1.onChanged.Add(OnCtrlChange);            _ui.m_TaskList.itemRenderer = TaskItemRender;            _ui.m_LivenessProcess.m_Reward20.target.onClick.Add(() => { OnClickReward(1).Coroutine(); });            _ui.m_LivenessProcess.m_Reward40.target.onClick.Add(() => { OnClickReward(2).Coroutine(); });            _ui.m_LivenessProcess.m_Reward60.target.onClick.Add(() => { OnClickReward(3).Coroutine(); });            _ui.m_LivenessProcess.m_Reward80.target.onClick.Add(() => { OnClickReward(4).Coroutine(); });            _ui.m_LivenessProcess.m_Reward100.target.onClick.Add(() => { OnClickReward(5).Coroutine(); });            _ui.m_GetAll.onClick.Add(OnBtnGetAllClick);        }        protected override void OnShown()        {            base.OnShown();            UpdateLivenessProcess();            UpdateTask();            if (_ui.m_TaskList.numItems > 0)            {                _ui.m_TaskList.ScrollToView(0);            }        }        protected override void AddEventListener()        {            EventAgent.AddEventListener(ConstMessage.LIVENESS_CHANGE, UpdateLivenessProcess);            EventAgent.AddEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange);        }        protected override void RemoveEventListener()        {            EventAgent.RemoveEventListener(ConstMessage.LIVENESS_CHANGE, UpdateLivenessProcess);            EventAgent.RemoveEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange);        }        private void OnTaskChange(EventContext eventContext)        {            var taskId = (int)eventContext.data;            var taskCfg = TaskCfgArray.Instance.GetCfg(taskId);            if (taskCfg == null) return;            if (taskCfg.taskType != taskType) return;            UpdateTask();        }        //切换任务类型        private void OnCtrlChange()        {            taskType = _ui.m_c1.selectedIndex switch            {                0 =>                    //每日任务                    TaskType.Daily,                1 =>                    //织造任务                    TaskType.BattlePass,                _ => taskType            };            //更新任务列表            UpdateTask();        }        //更新活跃度进度条        private void UpdateLivenessProcess()        {            var liveness = RoleDataManager.Liveness;            DailyTaskDataManager.Instance.GetShowLivenessBoxNum();            _ui.m_LivenessProcess.target.max = 100;            _ui.m_LivenessProcess.target.value = liveness;            var cfgs = DailyActiveRewardCfgArray.Instance.dataArray;            for (var i = 0; i < cfgs.Length; i++)            {                var boxId = i + 1;                var state = DailyTaskDataManager.Instance.GetBoxStateById(boxId);                switch (boxId)                {                    case 1:                        _ui.m_LivenessProcess.m_Reward20.m_c1.selectedIndex = state;                        break;                    case 2:                        _ui.m_LivenessProcess.m_Reward40.m_c1.selectedIndex = state;                        break;                    case 3:                        _ui.m_LivenessProcess.m_Reward60.m_c1.selectedIndex = state;                        break;                    case 4:                        _ui.m_LivenessProcess.m_Reward80.m_c1.selectedIndex = state;                        break;                    case 5:                        _ui.m_LivenessProcess.m_Reward100.m_c1.selectedIndex = state;                        break;                }            }        }        //更新任务列表        private void UpdateTask()        {            _cfgs = TaskDataManager.Instance.GetTaskCfgs(taskType);            _ui.m_TaskList.numItems = _cfgs.Count;        }        private void TaskItemRender(int index, GObject obj)        {            var item = UI_TaskListItem.Proxy(obj);            //领取状态            item.m_c1.selectedIndex = TaskDataManager.Instance.GetTaskStateById(_cfgs[index].id);            item.m_c2.selectedIndex = _cfgs[index].jumpId == "" ? 1 : 0;            item.m_txtDesc.text = TaskDataManager.Instance.GetTaskDesc(_cfgs[index].id);            item.m_txtCount.text =                $"{TaskDataManager.Instance.GetTaskProgressById(_cfgs[index].id)}/{_cfgs[index].GetTargetCount()}";            if (item.m_GetRewardBt.data == null)            {                item.m_GetRewardBt.onClick.Add(OnBtnGetClick);            }            item.m_GetRewardBt.data = _cfgs[index].id;            if (item.m_ComeBt.data == null)            {                item.m_ComeBt.onClick.Add(OnBtnGoClick);            }            item.m_ComeBt.data = _cfgs[index];            if (item.m_listTaskReward.data == null)            {                item.m_listTaskReward.itemRenderer = ListTaskRewardItemRender;            }            item.m_listTaskReward.data = _cfgs[index].rewardsArr;            item.m_listTaskReward.numItems = _cfgs[index].rewardsArr.Length;            UI_TaskListItem.ProxyEnd();        }        private static void ListTaskRewardItemRender(int index, GObject obj)        {            var rewards = (int[][])obj.parent.data;            var itemData = ItemUtil.createItemData(rewards[index]);            var item = new ItemView(obj as GComponent);            obj.data = item;            item.SetData(itemData);            item.ChangeTxtCountStyle();            UI_RewardIconYellow.ProxyEnd();        }        private async void OnBtnGetClick(EventContext context)        {            if (!(context.sender is GObject btnGet)) return;            var result = await TaskSProxy.GetTaskBonus((int)btnGet.data);            if (!result) return;            UpdateLivenessProcess();            UpdateTask();            LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.MEI_RI_REN_WU, 2);        }        private void OnBtnGoClick(EventContext context)        {            if (!(context.sender is GObject btnGo)) return;            var taskCfg = btnGo.data as TaskCfg;            //功能未开放            if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(taskCfg.jumpId)) return;            Hide();            var param = new object[taskCfg.jumpParamArr.Length];            for (var i = 0; i < taskCfg.jumpParamArr.Length; i++)            {                param[i] = taskCfg.jumpParamArr[i];            }            TaskDataManager.Instance.JumpToView(taskCfg.jumpId, param, new[] { typeof(TaskView).FullName, viewData });        }        private async void OnBtnGetAllClick()        {            //通用任务一键领奖            var result = await TaskSProxy.GetAllTaskBonus(taskType);            if (!result) return;            UpdateLivenessProcess();            UpdateTask();            LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.MEI_RI_REN_WU, 2);        }        private async ETTask OnClickReward(int id)        {            var cfg = DailyActiveRewardCfgArray.Instance.GetCfg(id);            var state = DailyTaskDataManager.Instance.GetBoxStateById(cfg.id);            switch (state)            {                case ConstBonusStatus.CAN_NOT_GET:                {                    var rewards = ItemUtil.CreateItemDataList(cfg.rewardsArr);                    ViewManager.Show<RewardPreView>(new object[] { rewards, "活跃度奖励", $"满足{cfg.count}活跃度可领取" });                    break;                }                case ConstBonusStatus.CAN_GET:                {                    var result = await DailyTaskSProxy.ReqLivenessBox(cfg.id);                    if (result) UpdateLivenessProcess();                    break;                }                case ConstBonusStatus.GOT:                    //领取完毕                    break;            }        }    }}
 |