using System.Collections.Generic; using System.Linq; using ET; using FairyGUI; using UI.CommonGame; using UI.Store; namespace GFGGame { public class BrocadeWeavTaskView : BaseWindow { private UI_BrocadeWeavTask _ui; private List _cfgs; private int funcType = TaskFuncType.BattlePass; private EffectUI _effectUI1; private EffectUI _effectUI2; public override void Dispose() { EffectUIPool.Recycle(_effectUI1); _effectUI1 = null; EffectUIPool.Recycle(_effectUI2); _effectUI2 = null; if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_BrocadeWeavTask.PACKAGE_NAME; _ui = UI_BrocadeWeavTask.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; _ui.m_TaskList.itemRenderer = TaskItemRender; _ui.m_btnGet.onClick.Add(OnBtnGetAllClick); AddEffect(); } protected override void OnShown() { base.OnShown(); UpdateTask(); if (_ui.m_TaskList.numItems > 0) { _ui.m_TaskList.ScrollToView(0); } } protected override void AddEventListener() { base.AddEventListener(); // EventAgent.AddEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange); EventAgent.AddEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTaskChanges); } protected override void RemoveEventListener() { base.RemoveEventListener(); // EventAgent.RemoveEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange); EventAgent.RemoveEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTaskChanges); } //OnTaskChanges private void OnTaskChanges(EventContext eventContext) { var taskIds = (List)eventContext.data; if (taskIds.Select(taskId => TaskCfgArray.Instance.GetCfg(taskId)).Where(taskCfg => taskCfg != null) .Any(taskCfg => taskCfg.funcType == funcType)) { UpdateTask(); } } private void OnTaskChange(EventContext eventContext) { var taskId = (int)eventContext.data; var taskCfg = TaskCfgArray.Instance.GetCfg(taskId); if (taskCfg == null) return; if (taskCfg.funcType != funcType) return; UpdateTask(); } //切换任务类型 private void OnCtrlChange() { //更新任务列表 UpdateTask(); } //更新任务列表 private void UpdateTask() { _cfgs = TaskDataManager.Instance.GetTaskCfgs(funcType); _ui.m_TaskList.numItems = _cfgs.Count; RedDotController.Instance.SetComRedDot(_ui.m_btnGet, TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.BattlePass)); } 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.target.data == null) { item.m_GetRewardBt.target.onClick.Add(OnBtnGetClick); } item.m_GetRewardBt.target.data = _cfgs[index].id; if (item.m_ComeBt.target.data == null) { item.m_ComeBt.target.onClick.Add(OnBtnGoClick); } item.m_ComeBt.target.data = _cfgs[index]; if (item.m_listTaskReward.data == null) { item.m_listTaskReward.itemRenderer = ListTaskRewardItemRender; } var reward = TaskDataManager.Instance.GetReward(_cfgs[index]); item.m_listTaskReward.data = reward; item.m_listTaskReward.numItems = reward.Length; var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy(); bool canGet = item.m_c1.selectedIndex == 1 && (funcType != TaskFuncType.BattlePass || funcType == TaskFuncType.BattlePass && isBuy); RedDotController.Instance.SetComRedDot(item.m_GetRewardBt.target, canGet); 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; if (funcType == TaskFuncType.BattlePass) { //检查通行证是否开启 var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy(); if (!isBuy) { PromptController.Instance.ShowFloatTextPrompt("开启锦罗织造可领取"); return; } } var result = await TaskSProxy.GetTaskBonus((int)btnGet.data); if (!result) return; UpdateTask(); LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.MEI_RI_REN_WU, 2); } private void OnBtnGoClick(EventContext context) { if (!(context.sender is GObject { data: TaskCfg taskCfg })) return; //功能未开放 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]; } ViewManager.JumpToView(taskCfg.jumpId, param,true); } private async void OnBtnGetAllClick() { //通用任务一键领奖 if (funcType == TaskFuncType.BattlePass) { //检查通行证是否开启 var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy(); if (!isBuy) { PromptController.Instance.ShowFloatTextPrompt("开启锦罗织造可领取"); return; } } var result = await TaskSProxy.GetAllTaskBonus(funcType); if (!result) return; UpdateTask(); LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.MEI_RI_REN_WU, 2); } private void AddEffect() { //邊框左上角特效 _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up"); //邊框右下角特效 _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down"); } } }