local ActivityDetail= quick_class("ActivityDetail") local sortingOrder = 0 local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig) local listUpPre={} -- local rate={} local panelType local detailText={ [1] = HELP_TYPE.TimeLimitedCall, [2] = HELP_TYPE.QianKunBox, } function ActivityDetail:ctor(gameObject,type) self.gameObject = gameObject panelType = type self:InitComponent(gameObject) self:BindEvent() self:OnShow() end function ActivityDetail:InitComponent(gameObject) self.closeBtn=Util.GetGameObject(self.gameObject,"close") self.itemGrid=Util.GetGameObject(self.gameObject,"panel/itemGrid") self.LookDetailBtn=Util.GetGameObject(self.gameObject,"panel/Image3/updetail") self.content=Util.GetGameObject(self.gameObject,"panel/content/Text"):GetComponent("Text") self.time=Util.GetGameObject(self.gameObject,"tip"):GetComponent("Text") self.rateGrid=Util.GetGameObject(self.gameObject,"panel/rate") end function ActivityDetail:BindEvent() Util.AddClick(self.closeBtn.gameObject,function() self:OnHide() end) Util.AddClick(self.LookDetailBtn.gameObject,function() self:LookDetailBtnAction() end) end function ActivityDetail:OnShow() self.gameObject:SetActive(true) -- LogRed(panelType) -- LogYellow(detailText[panelType]) local str=ConfigManager.TryGetConfigData(ConfigName.QAConfig,detailText[panelType]).content--内容详情可以复用 str = string.gsub(str,"{","") str = string.gsub(str,"}","") str = string.gsub(str,"|","\n")--换行 self.content.text= str local str2 --判断抽取的类型 if panelType == 1 then--破阵诛仙 self:ReFreshUpHero() self:RefreshHeroRate() str2=ActivityGiftManager.GetTimeStartToEnd(ActivityTypeDef.FindFairy) elseif panelType==2 then--乾坤包囊 self:ReFreshUpSoulPrint() str2=ActivityGiftManager.GetTimeStartToEnd(ActivityTypeDef.FindFairy) end self.time.text=Language[12170]..str2 end --============================乾坤包囊功能====================================== function ActivityDetail:ReFreshUpSoulPrint() end --============================破阵诛仙功能====================================== function ActivityDetail:ReFreshUpHero() local UpHero=RecruitManager.GetRewardPreviewData(PRE_REWARD_POOL_TYPE.TIME_LIMITED_UP) if(not listUpPre) then listUpPre={} end if(not rate) then rate={} end for n,m in ipairs(UpHero) do if m then if not listUpPre[n] then listUpPre[n] = SubUIManager.Open(SubUIConfig.ItemView,self.itemGrid.transform) end listUpPre[n]:OnOpen(false, {m.Reward[1], m.Reward[2]}, 1.1, true) local weight = self:ReculateUpHeroRate(m.Reward[1]) local tempName = listUpPre[n].name:GetComponent("Text").text listUpPre[n].name:GetComponent("Text").text=""..string.format("%.2f", (weight/100000)*100) .."%" listUpPre[n].gameObject:SetActive(true) table.insert(rate,{tag=Language[12171],name=tempName,value=weight}) end end end function ActivityDetail:ReculateUpHeroRate(id) local Hero=RecruitManager.GetRewardPreviewData(PRE_REWARD_POOL_TYPE.TIME_LIMITED) for n,m in ipairs(Hero) do if m and id==m.Reward[1] then return m.Weight end end return 0 end function ActivityDetail:RefreshHeroRate() local list3={} local list4={} local list5={} local list2={} local hero=RecruitManager.GetRewardPreviewData(PRE_REWARD_POOL_TYPE.TIME_LIMITED) for index, v in ipairs(hero) do if itemConfig[v.Reward[1]].HeroStar[2]==3 then table.insert(list3,v) elseif itemConfig[v.Reward[1]].HeroStar[2]==4 then table.insert(list4,v) elseif itemConfig[v.Reward[1]].HeroStar[2]==5 then table.insert(list5,v) elseif itemConfig[v.Reward[1]].HeroStar[2]==2 then table.insert(list2,v) end end table.insert(rate,{tag=Language[12173],name=Language[12174],value=self:ReculateRate(list5)}) table.insert(rate,{tag=Language[12175],name=Language[12176],value=self:ReculateRate(list4)}) table.insert(rate,{tag=Language[12177],name=Language[12178],value=self:ReculateRate(list3)}) table.insert(rate,{tag=Language[12179],name=Language[12180],value=self:ReculateRate(list2)}) for n,m in ipairs(rate) do if m and m.value>0 then local o=Util.GetGameObject(self.gameObject,"panel/rate/rateprefab"..n) if not o then else o.gameObject:SetActive(true) Util.GetGameObject(o.gameObject,"star"):GetComponent("Text") .text=m.tag Util.GetGameObject(o.gameObject,"name"):GetComponent("Text") .text=m.name Util.GetGameObject(o.gameObject,"rate"):GetComponent("Text") .text=string.format("%.2f",(m.value/100000)*100).."%" end end end end --通用计算权重功能 function ActivityDetail:ReculateRate(list) local weight=0 for index, v in ipairs(list) do weight=v.Weight+weight end return weight end function ActivityDetail:LookDetailBtnAction() UIManager.OpenPanel(UIName.HeroPreviewPanel,true,false) end function ActivityDetail:OnHide() self.gameObject:SetActive(false) for n,m in ipairs(rate) do if not rate[n] then local o=Util.GetGameObject(self.gameObject,"panel/rate/rateprefab"..n) o.gameObject.SetActive(false) end end rate={} end function ActivityDetail:OnDestroy() listUpPre=nil rate=nil end return ActivityDetail