--[[ 势力共建界面 ]] local UIGuildTask = UIViewClass() local DefaultWeeklyRefreshTimeID = 2 function UIGuildTask:OnOpened(context) self:RegistSystemEvent(EventID.GuildTarget_RefreshAllData, self.RefreshPanel) self:InitGuildTargetReward() CTL.GuildTarget.SetOpenGuildTargetView() self.parentView = context.parentView self.curSelectTab = context.taskSubViewTab self.toggle_TopGroup:SelectIndex(self.curSelectTab) self:RefreshRewardData() self:RefreshToggleRedPoint() local desc, timeStr = UTL.Time.GetDateDescAndTime({[1] = DefaultWeeklyRefreshTimeID}) self.txt_Tip02.text = string.FormatByIdsKey("IDS_GuildTarget_FunctionIntro2", desc .. timeStr) end function UIGuildTask:InitGuildTargetReward() if not self.guildTargetRewardData then self.guildTargetRewardData = {} for __, rewardData in DataSheetManager.GuildTargetSchedule:GetEnumerator() do self.guildTargetRewardData[rewardData.ID] = rewardData end end end function UIGuildTask:OnButtonClicked(comp) if comp == self.Btn_Fame then UIUtils.SetActive(self.Btn_CloseClick.gameObject, true) UIUtils.SetActive(self.group_TipsPanel.gameObject, true) elseif comp == self.Btn_CloseClick then UIUtils.SetActive(self.Btn_CloseClick.gameObject, false) UIUtils.SetActive(self.group_TipsPanel.gameObject, false) else for i = 1, #self.group_Progress do if comp == self.group_Progress[i].btn_Box then if CTL.GuildTarget.IsCanGetRewardById(i) then MDL.GuildTarget.ReqReceiveTargetReward(i) else local guildTargetRewardCfg = DataSheetManager.GuildTargetSchedule:GetDataByID(i) local rewadData = DataSheetManager.GuildTargetReward:GetDataByID(guildTargetRewardCfg.Reward) UTL.ItemTips.ShowCommonTipsById(rewadData.Item_Table[1].ItemID) end end end end end function UIGuildTask:OnValueChanged(comp, index) if comp == self.toggle_TopGroup then self.curSelectTab = index self.parentView.context.taskSubViewTab = index self:RefreshTaskListByIndex(index) end end function UIGuildTask:RefreshPanel() self:RefreshTaskListByIndex(self.curSelectTab) self:RefreshRewardData() self:RefreshToggleRedPoint() end function UIGuildTask:RefreshToggleRedPoint() self.toggle_TopGroup:SetRedPoint(0, MDL.GuildTarget.GetDayRewardRedPoint()) self.toggle_TopGroup:SetRedPoint(1, MDL.GuildTarget.GetWeekRewardRedPoint()) end function UIGuildTask:RefreshTaskListByIndex(index) local guildTargetData if index == 0 then guildTargetData = MDL.GuildTarget.GetGuildDayTask() else guildTargetData = MDL.GuildTarget.GetGuildWeekTask() end self.loop_TaskEntrance:ClearCells() for _, value in ipairs(guildTargetData) do self.loop_TaskEntrance:AddData(value, 0) end end function UIGuildTask:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_TaskEntrance then local targetCfgData = DataSheetManager.GuildTarget:GetDataByID(data.id) UIUtils.SetLabelText(cellTable.txt_ConditionDes, Const_IDS[targetCfgData.Text]) UIUtils.SetLabelText(cellTable.txt_Title, Const_IDS[targetCfgData.Name]) UIUtils.SetActive(cellTable.img_Team, targetCfgData.TagType == 2) UIUtils.SetLabel(cellTable.txt_Fame, targetCfgData.Points) UIUtils.SetImageByAssetBundle(cellTable.img_TaskIcon, targetCfgData.Image) local str = string.format("%s/%s", data.finishNum, targetCfgData.LimitNum) UIUtils.SetLabel(cellTable.txt_ProgressNum, data.finishNum == targetCfgData.LimitNum and UTL.Color.FormatYellowColor(str) or str) UIUtils.SetAtlasImageFillAmount(cellTable.filledBar, data.finishNum/targetCfgData.LimitNum) local rewardData = DataSheetManager.GuildTargetReward:GetDataByID(targetCfgData.AwardId) UTL.Item.SetItemCell(cellTable.item, rewardData.Item_Table[1].ItemID, rewardData.Item_Table[1].ItemNum) if data.rewardStatus == 0 then if targetCfgData.ItemSource > 0 then cellTable.state:SetState(0) else cellTable.state:SetState(3) end elseif data.rewardStatus == 1 then cellTable.state:SetState(1) cellTable.btn_Get:SetRedPoint(true) elseif data.rewardStatus == 2 then cellTable.state:SetState(2) end end end function UIGuildTask:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_TaskEntrance then if target == cellTable.btn_GoTo then if not CTL.HotFix.CheckAssetIsReady("GuildActivity") then CTL.Tips.AddTipsMsg(Const_IDS.IDS_DownloadNotFinish) return true end local targetCfgData = DataSheetManager.GuildTarget:GetDataByID(data.id) CTL.ItemSources.ExecuteSourceFunctionById(targetCfgData.ItemSource) elseif target == cellTable.btn_Get then MDL.GuildTarget.ReqReceiveTaskReward(data.id) elseif target == cellTable.item.event_Click then local targetCfgData = DataSheetManager.GuildTarget:GetDataByID(data.id) local rewardData = DataSheetManager.GuildTargetReward:GetDataByID(targetCfgData.AwardId) UTL.ItemTips.ShowCommonTipsById(rewardData.Item_Table[1].ItemID) end end end function UIGuildTask:RefreshRewardData() self:InitGuildTargetReward() local rewardCnt = #self.guildTargetRewardData local myScore = MDL.GuildTarget.GetGuildTaskScore() local myStep, myStepScore, myNextScore = 0, 0, 0 --我达到的档位、对应名望值和下一档名望值 local progressWidth = self.group_Progress.gameObject.transform.sizeDelta.x local offsetX = progressWidth / rewardCnt for index, rewardCfgData in ipairs(self.guildTargetRewardData) do if not self.group_Progress[index] then self:InstantiateCollection(self.group_Progress, self.Cell_Reward.gameObject) end UIUtils.SetActive(self.group_Progress[index].gameObject, true) UIUtils.SetLabel(self.group_Progress[index].lab_PersonalFameNum, rewardCfgData.Score) if myScore >= rewardCfgData.Score then myStep = index myStepScore = rewardCfgData.Score end if index - myStep == 1 then myNextScore = rewardCfgData.Score end self.group_Progress[index].gameObject.transform:SetAnchoredPosition(index*offsetX, 0) if CTL.GuildTarget.IsCanGetRewardById(rewardCfgData.ID) then UIUtils.SetActive(self.group_Progress[index].img_Mask.gameObject, false) self.group_Progress[index].effect_shine:PlayUIEffect() self.group_Progress[index].group_Box:SetState(1) elseif MDL.GuildTarget.IsHasGetRewardById(rewardCfgData.ID) then UIUtils.SetActive(self.group_Progress[index].img_Mask.gameObject, true) self.group_Progress[index].effect_shine:StopUIEffect() self.group_Progress[index].group_Box:SetState(2) else self.group_Progress[index].effect_shine:StopUIEffect() self.group_Progress[index].group_Box:SetState(0) UIUtils.SetActive(self.group_Progress[index].img_Mask.gameObject, false) end end --设置我的进度值 if myStep == rewardCnt then self.Scrollbar.value = 1 else local afterStep = (myScore - myStepScore) / (myNextScore - myStepScore) self.Scrollbar.value = (myStep + afterStep) / rewardCnt end UIUtils.SetLabel(self.txt_Fame, myScore) end return UIGuildTask