----- 日常副本 ----- require("Base/BasePanel") ChallengeCopyPanel = Inherit(BasePanel) local this = ChallengeCopyPanel 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-- 1 无尽副本 2 金币副本 副本索引id local fightIndex=1 --关卡索引 local maxForce = 0 --顶部背景图 local titleBg={ --回合 [1]={bg="r_richang_banner_5_zh", titleImg = "r_richang_banner_huihe_zh", titleTip = GetLanguageStrById(specialConfig[150].Value),pos = Vector3.New(257.08,658.37,0)}, --伤害 [2]={bg="r_richang_banner_4_zh", titleImg = "r_richang_banner_shanghai_zh", titleTip = GetLanguageStrById(specialConfig[151].Value),pos = Vector3.New(257.08,651.24,0)}, } --难度图片 local qualityBg={ [1]={s="r_richang_dengjie_jiandan_zh",b="r_richang_di_lan"}, [2]={s="r_richang_dengjie_putong_zh",b="r_richang_di_lan"}, [3]={s="r_richang_dengjie_kunnan_zh",b="r_richang_di_lan"}, [4]={s="r_richang_dengjie_emeng_zh",b="r_richang_di_zi"}, [5]={s="r_richang_dengjie_lianyu_zh",b="r_richang_di_zi"}, [6]={s="r_richang_dengjie_diyu_zh",b="r_richang_di_zi"}, [7]={s="r_richang_dengjie_shenyuan_zh",b="r_richang_di_hong"}, [8]={s="r_richang_dengjie_chuanqi_zh",b="r_richang_di_hong"}, [9]={s="r_richang_dengjie_shenhua_zh",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_huihe_01_zh", select = "r_richang_anniu_huihe_zh",lock = "r_richang_anniu_huihe_zh", name = Language[10282],type=FUNCTION_OPEN_TYPE.DAILYCHALLENGE_COIN }, [2] = { default = "r_richang_anniu_shanghai_01_zh", select = "r_richang_anniu_shanghai_zh",lock = "r_richang_anniu_shanghai_zh", name = Language[10283],type=FUNCTION_OPEN_TYPE.DAILYCHALLENGE_EXP }, } function ChallengeCopyPanel:InitComponent() this.spLoader = SpriteLoader.New() this.panel=Util.GetGameObject(this.gameObject,"Panel") this.titleBg=Util.GetGameObject(this.panel,"TitleBg"):GetComponent("Image") this.titleImg=Util.GetGameObject(this.panel,"TitleBg/Image"):GetComponent("Image") this.titleTip=Util.GetGameObject(this.panel,"TitleBg/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 ChallengeCopyPanel:BindEvent() --返回按钮 Util.AddClick(this.backBtn, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) --帮助按钮 Util.AddClick(this.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup,128,this.helpPosition.x,this.helpPosition.y) end) end function ChallengeCopyPanel: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 ChallengeCopyPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.ChallengeCopy.RefreshView,this.FiveRefresh) end function ChallengeCopyPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.ChallengeCopy.RefreshView,this.FiveRefresh) end function ChallengeCopyPanel:OnOpen(_carbonIndex) carbonIndex = CarbonManager.CheckCopyOpenState(1) and 1 or 2 this.upView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main }) end function ChallengeCopyPanel:OnShow() SoundManager.PlayMusic(SoundConfig.BGM_Carbon) local curFormationForce = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL) if PlayerManager.maxForce < curFormationForce then PlayerManager.maxForce = curFormationForce end maxForce = PlayerManager.maxForce this.TabCtrl:SetTabAdapter(this.TabAdapter) this.TabCtrl:SetTabIsLockCheck(this.TabIsLockCheck) this.TabCtrl:SetChangeTabCallBack(function(index) this.RefreshShow(index) end) this.TabCtrl:Init(this.tabBox, _TabData,carbonIndex) -- 音效 SoundManager.PlayMusic(SoundConfig.BGM_Carbon) end function ChallengeCopyPanel: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.challengeCopyDataTable[i].openState==1 and freeTime>0) end CheckRedPointStatus(RedPointType.challengeCopy) end function ChallengeCopyPanel:OnClose() end function ChallengeCopyPanel:OnDestroy() this.spLoader:Destroy() itemList={} this.scrollView=nil SubUIManager.Close(this.upView) end function this.FiveRefresh() this.RefreshShow(carbonIndex) end --刷新面板 function this.RefreshShow(i) carbonIndex = i local challengeStageId=CarbonManager.challengeCopyDataTable[carbonIndex].currentFloor if challengeStageId>0 then fightIndex= ConfigManager.GetConfigData(ConfigName.ChallengeStage,challengeStageId).Section else fightIndex=1 end curData={} curData=ConfigManager.GetAllConfigsDataByKey(ConfigName.ChallengeStage,"Chapter",i) this.titleBg.sprite=this.spLoader:LoadSprite(titleBg[i].bg) this.titleImg.sprite=this.spLoader:LoadSprite(titleBg[i].titleImg) this.titleTip.text=titleBg[i].titleTip this.SetTimeTip() this.SetScroll(fightIndex) ChallengeCopyPanel:RefreshRedPotShow() end --设置滚动条 function this.SetScroll(i) LogRed("列表索引:"..i) this.scrollView:SetData(curData,function(index,root) this.SetData(root,curData[index], curData[index - 1]) end,false,false) this.scrollView:SetIndex(i) end --设置滚动条数据 root根节点 data本地表数据 function this.SetData(root, data) local type=0 --0为未开启 1为挑战 2为扫荡 local bgQuality=Util.GetGameObject(root,"Bg"):GetComponent("Image") local title=Util.GetGameObject(root,"Title"):GetComponent("Image") local titleText=Util.GetGameObject(root,"TitleText"):GetComponent("Text") local rewardGrid=Util.GetGameObject(root,"Reward") local tip=Util.GetGameObject(root,"Tip"):GetComponent("Text") local power=Util.GetGameObject(root,"powerBtn/value"):GetComponent("Text") power.transform.parent.gameObject:SetActive(false) 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.PivilegeID[1])--商店表数据 title.sprite=this.spLoader:LoadSprite(qualityBg[1].s) title:SetNativeSize() titleText.text=data.Section bgQuality.sprite=this.spLoader:LoadSprite(qualityBg[1].b) type=CarbonManager.CheckChallengeCopyId(data.Chapter,data.NextLevel) local showReward={} ConnectTable(showReward,data.FixedReward) ConnectTable(showReward,data.PassReward) if type~=2 then ConnectTable(showReward,data.VictoryReward) end ResetItemView(root,rewardGrid.transform,itemList,3,0.9,orginLayer,false,showReward) for i = 0, 2 do local item=rewardGrid.transform:GetChild(i) local image = Util.GetGameObject(item,"PreciousShow") image.gameObject:SetActive(true) Util.GetGameObject(image, "Text").gameObject:SetActive(false) if i==0 then image:GetComponent("Image").sprite = this.spLoader:LoadSprite("x_xianyuan_baodijiaobiao_zh") elseif i==1 then image:GetComponent("Image").sprite = this.spLoader:LoadSprite("x_xianyuan_jindujiaobiao_zh") else image:GetComponent("Image").sprite = this.spLoader:LoadSprite("x_xianyuan_shoucijiaobiao_zh") end end --解锁状态 local _lv=0 --等级 local _point=0 --关卡 local _power = 0 --data.ForceShow--表战力 for i = 1, #data.LevelLimit do if data.LevelLimit[i][1] == 1 then _lv = data.LevelLimit[i][2] elseif data.LevelLimit[i][1] == 2 then _power = data.LevelLimit[i][2] elseif data.LevelLimit[i][1] == 3 then _point = data.LevelLimit[i][2] end end -- 判断每日副本是否解锁 local isOpen = CarbonManager.CheckChallengeCopyId(data.Chapter,data.NextLevel)>0 -- 上一个副本解锁 and PlayerManager.level >= _lv -- 等级 and PlayerManager.maxForce >= _power -- 战斗力 --显示挑战或扫荡道具消耗 goIcon:SetActive(false) goIconNum:SetActive( false) local usedTime=PrivilegeManager.GetPrivilegeUsedTimes(storeData.Limit)--已使用次数 local limitTime=PrivilegeManager.GetPrivilegeNumber(storeData.Limit) --购买次数上限 local buyTimes = (usedTime + 1) > limitTime and limitTime or usedTime+1 LogBlue("~~~~~~~usedTime:"..usedTime.." limitTime"..limitTime) if freeTime<=0 then goIconNumText.text=storeData.Cost[2][buyTimes] end --表现显示 Util.SetGray(goBtn, not isOpen) if type==1 or type==2 then goBtnText.text=Language[10287] goBtnImage.sprite=this.spLoader:LoadSprite("s_slbz_1anniuhuangse") power.text = _power tip.gameObject:SetActive(false) goIcon:SetActive(isOpen and freeTime<=0) goIconNum:SetActive( isOpen and freeTime<=0) if type==2 then goBtnText.text=Language[10289] goBtnImage.sprite=this.spLoader:LoadSprite("s_slbz_1anniuhuise") tip.text=Language[10290] tip.gameObject:SetActive(true) end else power.text = _power --string.format(Language[10291], _power) goBtnText.text=Language[10292] tip.gameObject:SetActive(false) end power.color = PlayerManager.maxForce >= _power and UIColor.WRITE or UIColor.RED --点击事件 Util.AddOnceClick(goBtn,function() if PlayerManager.level<_lv then PopupTipPanel.ShowTip(string.format(Language[10293],_lv)) return elseif PlayerManager.maxForce < _power then PopupTipPanel.ShowTip(string.format(Language[10294], _power)) return elseif _point ~= 0 and not FightPointPassManager.IsFightPointPass(_point) then PopupTipPanel.ShowTip(string.format(Language[10295], GetLanguageStrById(mainLevelConfig[_point].Name))) return end if not isOpen then PopupTipPanel.ShowTip(Language[10296]) return end --检测剩余次数 if buyTime<=0 and freeTime<=0 then PopupTipPanel.ShowTip(Language[10297]) return end --检测妖晶数量 local itemId=storeData.Cost[1][1] --消耗道具 if BagManager.GetItemCountById(itemId)0 then str=string.format(Language[12292],tostring(freeTime)) else str=string.format(Language[10300],tostring(buyTime)) end this.timeTip.text=str end -- tab节点显示自定义 function this.TabAdapter(tab, index, status) 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 = this.spLoader:LoadSprite(_TabData[index][status]) end ---检测tab是否锁定 function this.TabIsLockCheck(index) if CarbonManager.challengeCopyDataTable[index].openState==0 then local tipStr="" if CarbonManager.challengeCopyDataTable[index].type==1 then tipStr="副本每周一,三,五,七开启" else tipStr="副本每周二,四,六,七开启" end return true,tipStr end return false end return ChallengeCopyPanel