local UIActivitiesDetails = UIViewClass() local EventSystem = require('Event/EventSystem') local YELLOW_COLOR_STR = "%d" local TREASURE_ID_INTERMEDIATE = 51 local TREASURE_ID_ADVANCED = 52 function UIActivitiesDetails:OnOpened(context) self:RegistSystemEvent(EventID.UI_Activity_Refresh_Active, self.RefreshActive) CTL.Sound.PlayGameSound("UI_sound_Chapter") self.context = context self.activityId = context.activityId self.parentView = context.parentView self.isCross = CTL.WarZone.IsWarZoneOpen() local isOpen, condition = CTL.Activities.IsOpen(self.activityId) self.activityData = DataSheetManager.ActivityData:GetDataByID(self.activityId) UIUtils.SetLabelText(self.txt_Activities, Const_IDS[self.activityData.Activity]) --玩法标识 if self.activityData.TypeTips > 0 then --组队 self.group_Mode:SetState(self.activityData.TypeTips) else self.group_Mode:SetState(0) end self:RefreshActive() UIUtils.SetActive(self.event_Attr, false) self.state_Country:SetState(0) --次数 UIUtils.SetLabelText(self.lab_Condition01, Const_IDS.IDS_Activity_Title_LeftTimes) local countData = MDL.Activities.GetCountInfo(self.activityId) if self.activityId == LuaConst.ActivityType.TreasurePic then -- 寻宝活动特殊显示 local remainCount = MDL.Bag.GetItemCount(TREASURE_ID_ADVANCED) + MDL.Bag.GetItemCount(TREASURE_ID_INTERMEDIATE) UIUtils.SetLabelText(self.lab_Condition01, Const_IDS.IDS_Activity_DigTreasure_Num) if remainCount <= 0 then self.txt_Condition01.text = string.format(YELLOW_COLOR_STR, remainCount) else self.txt_Condition01.text = remainCount end elseif self.activityId == LuaConst.ActivityType.WantedTask then --国战悬赏任务 local curCount = MDL.CountryWantedTask.GetTaskWantedDailyNum() - MDL.CountryWantedTask.GetHasCompleteTaskNum() local sumCount = MDL.CountryWantedTask.GetTaskWantedDailyNum() if curCount == 0 then curCount = UTL.Color.FormatRedColor(curCount) end UIUtils.SetLabel(self.txt_Condition01, curCount .. "/" .. sumCount) elseif self.activityId == LuaConst.ActivityType.Storm then --暴风 UIUtils.SetLabelText(self.txt_Condition01, Const_IDS.IDS_Activity_NoLimitTimes) else if not string.isNilOrEmpty(self.activityData.EventDes) then UIUtils.SetLabelText(self.txt_Des, Const_IDS[self.activityData.EventDes]) self.state_Country:SetState(1) else if countData.isDisplayCountTxt then local curCount = countData.curCount if curCount == -1 and countData.sumCount == -1 then UIUtils.SetLabelText(self.txt_Condition01, Const_IDS.IDS_Activity_NoLimitTimes) else if curCount == 0 then curCount = UTL.Color.FormatRedColor(curCount) end UIUtils.SetLabel(self.txt_Condition01, curCount .. "/" .. countData.sumCount) end else UIUtils.SetLabelText(self.txt_Condition01, Const_IDS.IDS_Activity_NoLimitTimes) end end end --参与时间 if #self.activityData.Time_Table <= 0 then self.txt_ConditionB.text = nil UIUtils.SetLabelText(self.txt_ConditionA, Const_IDS.IDS_Activity_TimeShow01) else local date, time, extra = CTL.Activities.GetDetailsTimeDesc(self.activityData, true) self.txt_ConditionA.text = date self.txt_ConditionB.text = time self.extraDesc = extra UIUtils.SetActive(self.event_Attr, extra ~= nil) if self.activityData.ID == LuaConst.ActivityType.GuildWar and MDL.GuildWar.GuildWarIsFirstSign() then condition = nil end end --活动描述 UIUtils.SetLabelText(self.txt_Condition03, Const_IDS[self.activityData.ActivityDes]) if self.activityId == LuaConst.ActivityType.SyncFourCountryWar or self.activityId == LuaConst.ActivityType.HeroMatch1v1 or self.activityId == LuaConst.ActivityType.HeroMatch3v3 or self.activityId == LuaConst.ActivityType.FairSoloTournament or self.activityId == LuaConst.ActivityType.TeamFairChampionship then local isShowJoinBtn = isOpen and CTL.Activities.GetState(self.activityId) ~= CTL.Activities.ActivityState.End if self.activityId == LuaConst.ActivityType.SyncFourCountryWar then isShowJoinBtn = isOpen and MDL.SyncFourCountryWar.GetCurStage() > 1 end UIUtils.SetActive(self.btn_Join, isShowJoinBtn)--预览功能 UIUtils.SetActive(self.txt_BottomInfo, not isShowJoinBtn)--预览功能 local date, time, extra = CTL.Activities.GetDetailsTimeDesc(self.activityData) self.txt_BottomInfo.text = date else UIUtils.SetActive(self.btn_Join, isOpen)--预览功能 UIUtils.SetActive(self.txt_BottomInfo, not isOpen)--预览功能 self.txt_BottomInfo.text = condition end if self.activityId == LuaConst.ActivityType.FightThrone or self.activityId == LuaConst.ActivityType.GuildEscort or self.activityId == LuaConst.ActivityType.GuildBoss or self.activityId == LuaConst.ActivityType.GuildWar then self:RegistSystemEvent(EventID.WarZone_TimeRewardFresh, self.RefreshRewardScroll) self:RefreshRewardScroll() else self:RefreshRewardScroll() end end function UIActivitiesDetails:RefreshActive() --活跃度 local curActive, sumActive = MDL.Activities.GetActiveInfo(self.activityId) if sumActive <= 0 then UIUtils.SetLabelText(self.txt_ActiveNum, Const_IDS.IDS_Activity_NoActivition) else self.txt_ActiveNum.text = string.format(YELLOW_COLOR_STR, curActive) .. "/" .. sumActive end end function UIActivitiesDetails:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.RewardScroll then UTL.Item.SetItemCell(cellTable.item, data[1].ItemID, data[1].ItemNum) end end function UIActivitiesDetails:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.RewardScroll then local itemInfo = data[1] EventSystem.Dispatch(EventID.UI_ItemTips_Closed_Child, true) UTL.ItemTips.ShowCommonTipsById(itemInfo.ItemID) end end function UIActivitiesDetails:OnBackButtonPressed() self:CloseView() end function UIActivitiesDetails:OnButtonClicked(comp) if comp == self.btn_Close then self.parentView:CloseDetailViews() elseif comp == self.btn_Join then CTL.Activities.OpenActivityWindowByID(self.activityId) if CTL.Activities.IsNeedFindNPC(self.activityId) then if self.activityId == LuaConst.ActivityType.RingDaily and MDL.Task.GetDailyRingTaskState() == MDL.Task.Enum_RingTaskState.Done then return end UIManager.RecoverTopView() CTL.HomeMain.CloseOpenView() end elseif comp == self.event_Attr then UIManager.OpenView(Const_UI_Lua.UIEnum.UIDescriptionPanel, { target = self.event_Attr, posType = LuaConst.DescriptionPanelType.RightLower, text = self.extraDesc }) end end function UIActivitiesDetails:OnClosed() EventSystem.Dispatch(EventID.UI_ItemTips_Closed_Child, true) end function UIActivitiesDetails:RefreshRewardScroll() local cfg = DataSheetManager.RewardClientShow:GetDataByClientShowID(self.activityData.RewardShow) local rewardData = DataSheetUtil.GetRewardClientShowItemTable(cfg) if self.RewardScroll.Count > 0 then self.RewardScroll:ClearCells() end if self.activityId == LuaConst.ActivityType.FightThrone then -- 逐鹿中原--大预览跟随每次开启的具体拍卖道具显隐金品质以上道具 local firstRewardTable = MDL.FightThrone.GetAuctionPoolRewardArray(DataSheetManager.FightThroneGuildRank:GetDataByID(1)) self:SetGuildRewards(rewardData, firstRewardTable) elseif self.activityId == LuaConst.ActivityType.GuildEscort then -- 势力运镖--大预览跟随每次开启的具体拍卖道具显隐金品质以上道具 local firstRewardTable = MDL.GuildEscort.GetAuctionPoolRewardArray(DataSheetManager.GuildEscortRank:GetDataByID(1)) self:SetGuildRewards(rewardData, firstRewardTable) elseif self.activityId == LuaConst.ActivityType.GuildBoss then -- 魔将来袭--大预览跟随每次开启的具体拍卖道具显隐金品质以上道具 local RewardPoolID = {} if self.isCross then RewardPoolID = DataSheetManager.GuildBossGuildRewardCrossSever:GetDataByID(1).RewardPoolID else RewardPoolID = DataSheetManager.GuildBossGuildReward:GetDataByID(1).RewardPoolID end self:SetGuildRewards(rewardData, MDL.GuildAuction.GetAuctionRewardsShowList(RewardPoolID, LuaConst.ActivityType.GuildBoss)) elseif self.activityId == LuaConst.ActivityType.GuildWar then -- 势力争霸--大预览跟随每次开启的具体拍卖道具显隐金品质以上道具 local RewardPoolID = {} if self.isCross then RewardPoolID = DataSheetManager.GuildWarRankRewardCrossServer:GetDataByID_Rank(1, 1).RewardPoolID else RewardPoolID = DataSheetManager.GuildWarRankReward:GetDataByID_Rank(1, 1).RewardPoolID end self:SetGuildRewards(rewardData, MDL.GuildAuction.GetAuctionRewardsShowList(RewardPoolID, LuaConst.ActivityType.GuildWar)) else for i, v in ipairs(rewardData) do self:SetCellData(v) end end end function UIActivitiesDetails:SetGuildRewards(rewardData, firstRewardTable) local displayItem = DataSheetManager.ConstData:GetDataByID("ActivityRewardDisplayItem").IntListValue for _, RewardClientItem in ipairs(rewardData) do local itemData = DataSheetManager.ItemData:GetDataByID(RewardClientItem.ItemID) if itemData.Color >= LuaConst.QualityColor.Gold then for _, serverItemID in ipairs(firstRewardTable) do if RewardClientItem.ItemID == serverItemID.ItemID then self:SetCellData(RewardClientItem) break end end for _, itemID in ipairs(displayItem) do if RewardClientItem.ItemID == itemID then self:SetCellData(RewardClientItem) break end end else self:SetCellData(RewardClientItem) end end end function UIActivitiesDetails:SetCellData(RewardClientItem) local cellData = { RewardClientItem, RewardClientItem.FristGothrough } if cellData then self.RewardScroll:AddData(cellData, 0) end end return UIActivitiesDetails