----- 日常副本 ----- require("Base/BasePanel") DailyCarbonPanel = Inherit(BasePanel) local this = DailyCarbonPanel local dailyChallengeConfig=ConfigManager.GetConfig(ConfigName.DailyChallengeConfig) local mainLevelConfig = ConfigManager.GetConfig(ConfigName.MainLevelConfig) local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig) local specialConfig=ConfigManager.GetConfig(ConfigName.SpecialConfig) local curData={} local orginLayer=0 local carbonIndex=0--副本索引 local maxForce = 0 --顶部背景图 local titleBg={ --金币 [1]={bg="r_richang_banner_5",titleTip = specialConfig[41].Value,pos = Vector3.New(257.08,658.37,0)}, --经验 [2]={bg="r_richang_banner_4",titleTip = specialConfig[42].Value,pos = Vector3.New(257.08,651.24,0)}, --神将 [3]={bg="r_richang_banner_3",titleTip = specialConfig[43].Value,pos = Vector3.New(257.08,658.37,0)}, --法宝 [4]={bg="r_richang_banner_2",titleTip = specialConfig[44].Value,pos = Vector3.New(257.08,651.24,0)}, --魂印 [5]={bg="r_richang_banner_1",titleTip = specialConfig[45].Value,pos = Vector3.New(257.08,651.24,0)}, } --难度图片 local qualityBg={ [1]={s="r_richang_dengjie_jiandan",b="r_richang_di_lan"}, [2]={s="r_richang_dengjie_putong",b="r_richang_di_lan"}, [3]={s="r_richang_dengjie_kunnan",b="r_richang_di_lan"}, [4]={s="r_richang_dengjie_emeng",b="r_richang_di_zi"}, [5]={s="r_richang_dengjie_lianyu",b="r_richang_di_zi"}, [6]={s="r_richang_dengjie_diyu",b="r_richang_di_zi"}, [7]={s="r_richang_dengjie_shenyuan",b="r_richang_di_hong"}, [8]={s="r_richang_dengjie_chuanqi",b="r_richang_di_hong"}, [9]={s="r_richang_dengjie_shenhua",b="r_richang_di_hong"} } local itemList={}--奖励容器 --每日副本服务器数据 local buyTime=0--购买次数 local freeTime=0--免费次数 --Tab local TabBox = require("Modules/Common/TabBox") local _TabData={ [1] = { default = "r_richang_anniu_jinbi_01", select = "r_richang_anniu_jinbi",lock = "r_richang_anniu_jinbi", name = Language[10328],type=FUNCTION_OPEN_TYPE.DAILYCHALLENGE_COIN }, [2] = { default = "r_richang_anniu_jingyan_01", select = "r_richang_anniu_jingyan",lock = "r_richang_anniu_jingyan", name = Language[10329],type=FUNCTION_OPEN_TYPE.DAILYCHALLENGE_EXP }, [3] = { default = "r_richang_anniu_lieyaoshi_01", select = "r_richang_anniu_lieyaoshi",lock = "r_richang_anniu_lieyaoshi", name = Language[10330],type=FUNCTION_OPEN_TYPE.DAILYCHALLENGE_HERODEBRIS }, [4] = { default = "r_richang_anniu_fabao_01", select = "r_richang_anniu_fabao",lock = "r_richang_anniu_fabao", name = Language[10331],type=FUNCTION_OPEN_TYPE.DAILYCHALLENGE_TALISMAN }, [5] = { default = "r_richang_anniu_hunyin_01", select = "r_richang_anniu_hunyin",lock = "r_richang_anniu_hunyin", name = Language[10332],type=FUNCTION_OPEN_TYPE.DAILYCHALLENGE_SOULPRINT } } local _TabFontColor = { default = Color.New(130 / 255, 128 / 255, 120 / 255, 1), select = Color.New(243 / 255, 235 / 255, 202 / 255, 1), lock=Color.New(243 / 255, 235 / 255, 202 / 255, 1)} function DailyCarbonPanel:InitComponent() this.panel=Util.GetGameObject(this.gameObject,"Panel") this.titleBg=Util.GetGameObject(this.panel,"Bg/TitleBg"):GetComponent("Image") this.titleTip=Util.GetGameObject(this.panel,"Bg/Text"):GetComponent("Text") this.timeTip=Util.GetGameObject(this.panel,"TimeTip"):GetComponent("Text") this.backBtn=Util.GetGameObject(this.panel,"BackBtn") this.helpBtn= Util.GetGameObject(this.panel, "HelpBtn") this.helpPosition=this.helpBtn:GetComponent("RectTransform").localPosition --滚动条 this.pre = Util.GetGameObject(this.panel, "Scroll/Pre") this.scroll = Util.GetGameObject(this.panel, "Scroll") this.scrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView,this.scroll.transform, this.pre, nil, Vector2.New(992.4, 1205.6), 1, 1, Vector2.New(40, 10)) this.scrollView.moveTween.MomentumAmount = 1 this.scrollView.moveTween.Strength = 2 this.upView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform) this.tabBox = Util.GetGameObject(this.panel, "TabBox") this.TabCtrl = TabBox.New() end function DailyCarbonPanel:BindEvent() --返回按钮 Util.AddClick(this.backBtn, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) --帮助按钮 Util.AddClick(this.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.DailyCarbon,this.helpPosition.x,this.helpPosition.y) end) end function DailyCarbonPanel:OnSortingOrderChange() orginLayer = self.sortingOrder for i, v in pairs(itemList) do for j = 1, #itemList[i] do itemList[i][j]:SetEffectLayer(orginLayer) end end end function DailyCarbonPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh,this.FiveRefresh) end function DailyCarbonPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh,this.FiveRefresh) end function DailyCarbonPanel:OnOpen(_carbonIndex) carbonIndex = _carbonIndex and _carbonIndex or 1 this.upView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main }) end function DailyCarbonPanel:OnShow() local curFormationForce = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL) if PlayerManager.maxForce < curFormationForce then PlayerManager.maxForce = curFormationForce end maxForce = PlayerManager.maxForce if carbonIndex==0 then carbonIndex=1 end this.TabCtrl:SetTabAdapter(this.TabAdapter) this.TabCtrl:SetTabIsLockCheck(this.TabIsLockCheck) this.TabCtrl:SetChangeTabCallBack(this.RefreshShow) this.TabCtrl:Init(this.tabBox, _TabData,carbonIndex) -- 音效 SoundManager.PlayMusic(SoundConfig.BGM_Carbon) end function DailyCarbonPanel:RefreshRedPotShow() local tabs = Util.GetGameObject(this.tabBox,"box").transform for i = 1,tabs.childCount do Util.GetGameObject(tabs:GetChild(i-1),"Redpot").gameObject:SetActive(CarbonManager.GetDailyCarbons(i).state) end CheckRedPointStatus(RedPointType.HeroExplore) end function DailyCarbonPanel:OnClose() end function DailyCarbonPanel:OnDestroy() itemList={} this.scrollView=nil SubUIManager.Close(this.upView) end function this.FiveRefresh() this.RefreshShow(1) DailyCarbonPanel:RefreshRedPotShow() end --刷新面板 function this.RefreshShow(i) carbonIndex = i curData={} curData=ConfigManager.GetAllConfigsDataByKey(ConfigName.DailyChallengeConfig,"Type",i) this.titleBg.sprite=Util.LoadSprite(titleBg[i].bg) this.titleTip.text=titleBg[i].titleTip this.titleTip.gameObject:GetComponent("RectTransform").localPosition =titleBg[i].pos this.SetTimeTip() this.SetScroll(i) DailyCarbonPanel:RefreshRedPotShow() end --设置滚动条 local curMaxOpenId = 0 function this.SetScroll(i) curMaxOpenId = 1 this.scrollView:SetData(curData,function(index,root) this.SetData(root,curData[index], curData[index - 1]) end) this.scrollView:SetIndex(1) end --设置滚动条数据 root根节点 data本地表数据 ldata 上一条数据 function this.SetData(root, data, ldata) local type=0 --0为未开启 1为挑战 2为扫荡 local bgQuality=Util.GetGameObject(root,"BgQuality"):GetComponent("Image") local title=Util.GetGameObject(root,"Title"):GetComponent("Image") local reward=Util.GetGameObject(root,"Reward") local tip=Util.GetGameObject(root,"Tip"):GetComponent("Text") local goBtn=Util.GetGameObject(root,"GoBtn") local goBtnImage=goBtn:GetComponent("Image") local goBtnText=Util.GetGameObject(goBtn,"Text"):GetComponent("Text") local goIcon=Util.GetGameObject(goBtn,"Icon") local goIconNum=Util.GetGameObject(goBtn,"IconNum") local goIconNumText=goIconNum:GetComponent("Text") local storeData=ConfigManager.GetConfigDataByDoubleKey(ConfigName.StoreConfig,"StoreId",7,"Limit",data.PrivilegeId[1])--商店表数据 title.sprite=Util.LoadSprite(qualityBg[data.Quality].s) title:SetNativeSize() bgQuality.sprite=Util.LoadSprite(qualityBg[data.Quality].b) ResetItemView(root,reward.transform,itemList,3,0.9,orginLayer,false,data.RewardView) --解锁状态 local _lv=0 --等级 local _point=0 --关卡 local _power = 0 --data.ForceShow--表战力 for i = 1, #data.OpenRules do if data.OpenRules[i][1] == 1 then _lv = data.OpenRules[i][2] elseif data.OpenRules[i][1] == 2 then _point = data.OpenRules[i][2] elseif data.OpenRules[i][1] == 3 then _power = data.OpenRules[i][2] end end if data.OpenRules[2] ~= nil and data.OpenRules[1][1] == 1 then _lv = data.OpenRules[1][2] end if data.OpenRules[1] ~= nil and data.OpenRules[1][1] == 2 then _point= data.OpenRules[1][2] end if data.OpenRules[2][1]==3 then _power= data.OpenRules[2][2] end -- 判断每日副本是否解锁 local isOpen = (not ldata or CarbonManager.IsDailyCarbonPass(ldata.Id)) -- 上一个副本解锁 and PlayerManager.level >= _lv -- 等级 and (_point == 0 or FightPointPassManager.IsFightPointPass(_point)) and PlayerManager.maxForce >= _power -- 战斗力 --显示挑战或扫荡道具消耗 goIcon:SetActive(isOpen and freeTime<=0) goIconNum:SetActive( isOpen and freeTime<=0) if freeTime<=0 then goIconNumText.text=storeData.Cost[2][4] end --表现显示 Util.SetGray(goBtn, not isOpen) if isOpen then type=1 goBtnText.text=Language[10334] goBtnImage.sprite=Util.LoadSprite("s_slbz_1anniuhuangse") tip.text=string.format(Language[10335],_power) if CarbonManager.IsDailyCarbonPass(data.Id) then type=2 goBtnText.text=Language[10336] goBtnImage.sprite=Util.LoadSprite("s_slbz_1anniuhuise") tip.text=Language[10337] if curMaxOpenId < data.Id then curMaxOpenId = data.Id end end else type=0 tip.text=string.format(Language[10338],_power) goBtnText.text=Language[10339] end --点击事件 Util.AddOnceClick(goBtn,function() if PlayerManager.level<_lv then PopupTipPanel.ShowTip(string.format(Language[10340],_lv)) return elseif PlayerManager.maxForce < _power then PopupTipPanel.ShowTip(string.format(Language[12219], _power)) return elseif _point ~= 0 and not FightPointPassManager.IsFightPointPass(_point) then PopupTipPanel.ShowTip(string.format(Language[12220], mainLevelConfig[_point].Name)) return elseif PlayerManager.curMapId ~= 0 and FightPointPassManager.IsFightPointPass(PlayerManager.curMapId)==false then PopupTipPanel.ShowTip(string.format(Language[10341],mainLevelConfig[_point].Name)) return end if not isOpen then PopupTipPanel.ShowTip(Language[12191]) return end --检测剩余次数 if buyTime<=0 and freeTime<=0 then PopupTipPanel.ShowTip(Language[10342]) return end --检测妖晶数量 local itemId=storeData.Cost[1][1] --消耗道具 if BagManager.GetItemCountById(itemId)0 then str=string.format(Language[10344],tostring(freeTime)) else str=string.format(Language[10345],tostring(buyTime)) end this.timeTip.text=str end -- tab节点显示自定义 function this.TabAdapter(tab, index, status) -- local tabLab = Util.GetGameObject(tab, "Text") local lock = Util.GetGameObject(tab, "LockImage") local islock = status == "lock" Util.SetGray( Util.GetGameObject(tab,"Image").gameObject, islock) lock:SetActive(islock) Util.GetGameObject(tab,"Image"):GetComponent("Image").sprite = Util.LoadSprite(_TabData[index][status]) -- tabLab:GetComponent("Text").text = _TabData[index].name -- tabLab:GetComponent("Text").color = _TabFontColor[status] end function this.TabIsLockCheck(index) if not ActTimeCtrlManager.SingleFuncState(_TabData[index].type) then return true,ActTimeCtrlManager.SystemOpenTip(_TabData[index].type) end return false end return DailyCarbonPanel