using System.Collections.Generic; using ET; using FairyGUI; using UI.Task; namespace GFGGame { public class CombTaskView : BaseWindow { private UI_CombTaskUI _ui; private List _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(); } protected override void AddEventListener() { EventAgent.AddEventListener(ConstMessage.LIVENESS_CHANGE, UpdateLivenessProcess); } protected override void RemoveEventListener() { EventAgent.RemoveEventListener(ConstMessage.LIVENESS_CHANGE, UpdateLivenessProcess); } //切换任务类型 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); var index = state == ConstBonusStatus.CAN_GET ? 1 : 0; switch (boxId) { case 1: _ui.m_LivenessProcess.m_Reward20.m_c1.selectedIndex = index; break; case 2: _ui.m_LivenessProcess.m_Reward40.m_c1.selectedIndex = index; break; case 3: _ui.m_LivenessProcess.m_Reward60.m_c1.selectedIndex = index; break; case 4: _ui.m_LivenessProcess.m_Reward80.m_c1.selectedIndex = index; break; case 5: _ui.m_LivenessProcess.m_Reward100.m_c1.selectedIndex = index; 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].count}"; 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].jumpId; 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 item = UI_RewardIconYellow.Proxy(obj); var rewards = (int[][])item.target.parent.data; var itemCfg = ItemCfgArray.Instance.GetCfg(rewards[index][0]); item.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(itemCfg.res); item.m_num.text = $"{rewards[index][1]}"; 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) { Hide(); var btnGo = context.sender as GObject; if (btnGo == null) return; ViewManager.Show($"GFGGame.{btnGo.data}", null, new[] { typeof(TaskView).FullName, viewData }, true); } 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(new object[] { rewards, "活跃度奖励", $"满足{cfg.count}活跃度可领取" }); break; } case ConstBonusStatus.CAN_GET: { var result = await DailyTaskSProxy.ReqLivenessBox(cfg.id); if (result) UpdateTask(); break; } case ConstBonusStatus.GOT: //领取完毕 break; } } } }