using FairyGUI; using System.Collections.Generic; using cfg.GfgCfg; using ET; using UI.CommonGame; using UI.Task; namespace GFGGame { public class TaskAchieveDetailView : BaseWindow { private UI_TaskAchieveDetailUI _ui; private List _cfgs = new List(); private int funcType = TaskFuncType.Achievement; private List _cfgsAll = new List(); public int taskSubType = 0; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_TaskAchieveDetailUI.PACKAGE_NAME; _ui = UI_TaskAchieveDetailUI.Create(); viewCom = _ui.target; isfullScreen = true; isReturnView = true; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("chengjiu_bg"); _ui.m_btnBack.onClick.Add(OnBtnBackClick); _ui.m_listAchieveTask.itemRenderer = RenderListAchieveTask; _ui.m_listAchieveTask.SetVirtual(); } private void OnBtnBackClick() { this.Hide(); //ViewManager.Hide(); //ViewManager.Show(); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.ACHIEVEMENT_TASK_PRO_CHANGED, UpdateProgressValue); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.ACHIEVEMENT_TASK_PRO_CHANGED, UpdateProgressValue); } protected override void OnShown() { base.OnShown(); UpdateTask(); _ui.m_listAchieveTask.ScrollToView(0); } protected override void OnHide() { base.OnHide(); } private void UpdateProgressValue() { var taskTypeProList = TaskDataManager.Instance.GetAchievementTaskTypeProList(); foreach (var info in taskTypeProList) { if (info.AchievementType == taskSubType + 1) { _ui.m_txtProgress.text = (info.CompleteTaskNum * 100 / info.AllTaskNum) + "%"; break; } } } private void UpdateTask() { if (this.viewData != null) taskSubType = (int)this.viewData; _ui.m_AchieveType.selectedIndex = taskSubType; UpdateProgressValue(); _cfgsAll = TaskDataManager.Instance.GetTaskAchieveCfgs(funcType); _cfgs.Clear(); for (int i = 0; i < _cfgsAll.Count; i++) { if (_cfgsAll[i].AchievementType == taskSubType + 1) _cfgs.Add(_cfgsAll[i]); } _ui.m_listAchieveTask.numItems = _cfgs.Count; } private void RenderListAchieveTask(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_c3.selectedIndex = 2; item.m_txtDesc.text = TaskDataManager.Instance.GetTaskDesc(_cfgs[index].Id); item.m_taskBar.value = TaskDataManager.Instance.GetTaskProgressById(_cfgs[index].Id); item.m_taskBar.max = _cfgs[index].GetTargetCount(); //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.Count; var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy(); bool canGet = item.m_c1.selectedIndex == 1; RedDotController.Instance.SetComRedDot(item.m_GetRewardBt.target, canGet); UI_TaskListItem.ProxyEnd(); } private static void ListTaskRewardItemRender(int index, GObject obj) { var rewards = (List)obj.parent.data; var itemData = ItemUtil.createItemData(new ItemParamProto() { ItemId = rewards[index].ItemId, Count = rewards[index].Count }); 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; 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; var param = new object[taskCfg.JumpParam.Count]; for (var i = 0; i < taskCfg.JumpParam.Count; i++) { param[i] = taskCfg.JumpParam[i]; } ViewManager.JumpToView(taskCfg.JumpId, param); } } }