----- 法宝进阶面板 ----- require("Base/BasePanel") TalismanInfoPanel = Inherit(BasePanel) local this = TalismanInfoPanel local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local propertyConfig=ConfigManager.GetConfig(ConfigName.PropertyConfig) local passiveSkillConfig=ConfigManager.GetConfig(ConfigName.PassiveSkillConfig) local artResourcesConfig=ConfigManager.GetConfig(ConfigName.ArtResourcesConfig) local curTalismanConFig --EquipTalismana表数据 local nextTalismanConFig --EquipTalismana下一等级表数据 local curHeroData--当前英雄数据 local heroListData--全部英雄数据 local _heroListData={} --注意 这是筛选后的数据 本脚本当前英雄数据是从这里再被筛选出来的 匹配未满级的Hero local data={} --英雄表下法宝属性 local maxLv=0 --法宝最大进阶等级 local curLv=0 --当前法宝等级 local isMaxStar = false --默认不是最大进阶等级 --属性容器 local proList = {} --进阶奖励容器 local upStarGrid={} local itemGrid={} local orginLayer local index = 0 function TalismanInfoPanel:InitComponent() this.spLoader = SpriteLoader.New() orginLayer =0 self.upView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft}) self.effect = Util.GetGameObject(self.gameObject,"Effect") self.backBtn = Util.GetGameObject(self.gameObject, "btnBack/btnBack") self.upStarBtn = Util.GetGameObject(self.gameObject, "upStarBtn") self.leftBtn = Util.GetGameObject(self.gameObject, "LeftBtn") self.rightBtn = Util.GetGameObject(self.gameObject, "RightBtn") self.helpBtn=Util.GetGameObject(self.gameObject,"HelpBtn") self.helpPosition=self.helpBtn:GetComponent("RectTransform").localPosition --法宝战力 self.force = Util.GetGameObject(self.gameObject, "PowerBtn/Value"):GetComponent("Text") self.addForce=Util.GetGameObject(self.gameObject,"PowerBtn/AddValue"):GetComponent("Text") self.upLvEffect = Util.GetGameObject(self.gameObject,"PowerBtn/Effect") --法宝icon self.talismanRoot = Util.GetGameObject(self.gameObject, "TalismanRoot"):GetComponent("Image") self.talismanIcon = Util.GetGameObject(self.gameObject, "TalismanRoot/icon"):GetComponent("Image") --英雄名称 self.talismanOldNameObj=Util.GetGameObject(self.gameObject, "TalismanRoot/Panel/OldName") self.talismanOldName = Util.GetGameObject(self.talismanOldNameObj, "Text"):GetComponent("Text") self.talismanNewNameObj=Util.GetGameObject(self.gameObject,"TalismanRoot/Panel/NewName") self.talismanNewName=Util.GetGameObject(self.talismanNewNameObj,"Text"):GetComponent("Text") self.image=Util.GetGameObject(self.gameObject,"TalismanRoot/Image"):GetComponent("Image")--三角图标 --属性 self.upStarMaterialInfo = Util.GetGameObject(self.transform,"downGo/upStarMaterialInfo") self.noUpStarText = Util.GetGameObject(self.transform,"downGo/noUpStarText") --属性预设 self.proPre=Util.GetGameObject(self.gameObject,"downGo/proGrid/Root/ProPre") --属性列表父物体 self.proRoot=Util.GetGameObject(self.gameObject,"downGo/proGrid/Root") --天赋激活信息 self.skillInfoText = Util.GetGameObject(self.transform, "downGo/skillInfo/Mask/Text"):GetComponent("Text") --进阶材料根节点 for i=1,3 do upStarGrid[i] = Util.GetGameObject(self.gameObject, "downGo/upStarMaterialInfo/upStarGrid/item"..i) end --金币 姚晶材料 for n=1,2 do itemGrid[n]=Util.GetGameObject(self.gameObject,"downGo/upStarMaterialInfo/itemGrid/item"..n) end end function TalismanInfoPanel:BindEvent() Util.AddClick(self.backBtn, function() UIManager.OpenPanel(UIName.RoleTalismanPanelV2,curHeroData,heroListData) self:ClosePanel() end) Util.AddClick(self.upStarBtn, function() if HeroManager.GetTalismanLv(curHeroData.dynamicId)>= maxLv then PopupTipPanel.ShowTip(Language[11788]) return end --需要判断材料够不够 local tip={} for i=1,#curTalismanConFig.RankupBasicMaterial do local id=curTalismanConFig.RankupBasicMaterial[i][1]--物品ID local needNum=curTalismanConFig.RankupBasicMaterial[i][2]--需要物品数量 local haveNum=BagManager.GetItemCountById(id)--已有物品数量 if haveNum0 then --有东西不足了 if #tip==1 then --一个不足时 PopupTipPanel.ShowTip(string.format(Language[10298],tip[1])) else for j = 1, #tip do --多个不足 加逗号 if j~=1 then tip[j]=","..tip[j] end end PopupTipPanel.ShowTip(string.format(Language[10298],table.concat(tip))) end return end NetManager.TalismanUpStarRequest(tostring(curHeroData.dynamicId),function (msg) HeroManager.SetTalismanLv(curHeroData.dynamicId,curHeroData.talismanList+1)--本地标记等级 --设置战斗力脏数据 HeroPropManager.SetDirtyByType(curHeroData.dynamicId, Hero_Prop_Type.Talisman) UIManager.OpenPanel(UIName.TalismanUpStarSuccessPanel,curHeroData,function () self:OnShowPanelData() end,function() self:ClosePanel() end) end) end) Util.AddClick(self.leftBtn, function() self:LeftBtnOnClick() end) Util.AddClick(self.rightBtn, function() self:RightBtnOnClick() end) --帮助按钮 Util.AddClick(self.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.NewTalismanUp,self.helpPosition.x,self.helpPosition.y) end) end function TalismanInfoPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.BugCoin.OnBuyCoinUpdate, this.ShowUpStarGridData) end function TalismanInfoPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.BugCoin.OnBuyCoinUpdate, this.ShowUpStarGridData) end function TalismanInfoPanel:OnSortingOrderChange() Util.AddParticleSortLayer(self.effect, self.sortingOrder - orginLayer) orginLayer = self.sortingOrder end function TalismanInfoPanel:OnOpen(_curHeroData,_heroListData) curHeroData = _curHeroData heroListData=_heroListData end function TalismanInfoPanel:OnShow() self.upView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Talisman }) isMaxStar = false --拿到全部已激活数据 需要筛选出未满级的数据 for i = 1, #heroListData do local d=ConfigManager.GetConfigData(ConfigName.HeroConfig,heroListData[i].id).EquipTalismana--当前法宝数据 data[1]星级 data[2]法宝ID local mLv=TalismanManager.AllTalismanEndStar[d[2]] local lv= HeroManager.GetTalismanLv(heroListData[i].dynamicId) if lv1) self.rightBtn:SetActive(#heroListData>1) self:OnShowPanelData() end --显示 function TalismanInfoPanel:OnShowPanelData() data=ConfigManager.GetConfigData(ConfigName.HeroConfig,curHeroData.id).EquipTalismana--当前法宝数据 data[1]星级 data[2]法宝ID --获取最大等级 TalismanManager.GetStartAndEndStar() maxLv=50 --获取当前法宝等级 curLv=HeroManager.GetTalismanLv(curHeroData.dynamicId) --获取当前等级与下一等级表数据 local nextLv=0 if (curLv+1) <= maxLv then nextLv=curLv+1 end isMaxStar = curLv >= maxLv curTalismanConFig= ConfigManager.GetConfigDataByDoubleKey(ConfigName.EquipTalismana,"Level",curLv,"TalismanaId",data[2]) if isMaxStar==false then nextTalismanConFig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.EquipTalismana, "TalismanaId", data[2], "Level", nextLv) end --法宝战力 local curPower = TalismanManager.CalculateWarForceBase(curTalismanConFig,0) -- local nextPower=TalismanManager.CalculateWarForceBase(nextTalismanConFig,0) self.force.text = curPower -- self.addForce.text="+"..(nextPower-curPower) --法宝Icon 边框品质 self.talismanRoot.sprite = this.spLoader:LoadSprite(TalismanBubble[itemConfig[data[2]].Quantity]) self.talismanIcon.sprite = this.spLoader:LoadSprite(GetResourcePath(itemConfig[data[2]].ResourceID)) self.talismanNewNameObj:SetActive(not isMaxStar) self.image.enabled= not isMaxStar if isMaxStar==false then self.talismanOldName.text=string.format( "%s+%s",GetLanguageStrById(itemConfig[data[2]].Name),curLv) self.talismanNewName.text=string.format( "%s+%s",GetLanguageStrById(itemConfig[data[2]].Name),curLv+1) else self.talismanOldName.text = string.format( "%s+%s",GetLanguageStrById(itemConfig[data[2]].Name),maxLv) end self:ShowProAndSkillData() this.ShowUpStarGridData() --self真的很坑 end --显示属性提升、天赋激活信息 function TalismanInfoPanel:ShowProAndSkillData() self.upStarMaterialInfo:SetActive(not isMaxStar) self.noUpStarText:SetActive(isMaxStar) --设置属性提升 for i=1,#curTalismanConFig.Property do local item= proList[i] if not item then item= newObjToParent(self.proPre,self.proRoot) item.name="ProPre"..i proList[i]=item end local icon=Util.GetGameObject(proList[i],"Icon"):GetComponent("Image") local proName=Util.GetGameObject(proList[i],"ProName"):GetComponent("Text") local proValue=Util.GetGameObject(proList[i],"ProValue"):GetComponent("Text") local nextProValue=Util.GetGameObject(proList[i],"NextProValue"):GetComponent("Text") local skillId=curTalismanConFig.Property[i][1] local curValue=curTalismanConFig.Property[i][2] local nextValue=0 if not isMaxStar then nextValue=nextTalismanConFig.Property[i][2] end icon.sprite=this.spLoader:LoadSprite(artResourcesConfig[propertyConfig[skillId].PropertyIcon].Name) icon:SetNativeSize() proName.text= GetLanguageStrById(propertyConfig[skillId].Info) proValue.text=curValue nextProValue.text=nextValue end --显示法宝天赋 --筛选出符合要求的数据 local dowerAllData= ConfigManager.GetAllConfigsDataByKey(ConfigName.EquipTalismana,"TalismanaId",data[2]) local dowerData={}--当前法宝全部技能开放数据 for i=1,#dowerAllData do if dowerAllData[i].OpenSkillRules then table.insert( dowerData, dowerAllData[i]) end end table.sort(dowerData, function(a,b) return a.OpenSkillRules[1] curLv then return dowerData[j].Level end end end --显示进阶信息 function this.ShowUpStarGridData() if isMaxStar then return end --关闭激活 for n=1,#upStarGrid do upStarGrid[n].gameObject:SetActive(false) end for m=1,#itemGrid do itemGrid[m].gameObject:SetActive(false) end --数据拆分 local upStarData={}--不包含金币姚晶的数据 local itemData={}--金币姚晶的数据 --根据消耗材料显示 for i=1,#curTalismanConFig.RankupBasicMaterial do local _data=curTalismanConFig.RankupBasicMaterial[i] local itemId=_data[1] if itemId==14 or itemId==16 then table.insert(itemData, _data) else table.insert(upStarData, _data) end end --赋值 for x=1,#upStarData do upStarGrid[x].gameObject:SetActive(true) local id=upStarData[x][1]--物品ID local needNum=upStarData[x][2]--需要物品数量 local haveNum=BagManager.GetItemCountById(id)--已有物品数量 local info="" if haveNum>=needNum then info=haveNum.."/"..needNum else info=""..haveNum.."/"..needNum.."" end local frame=Util.GetGameObject(upStarGrid[x],"frame"):GetComponent("Image") local icon=Util.GetGameObject(upStarGrid[x],"icon"):GetComponent("Image") local num=Util.GetGameObject(upStarGrid[x],"num"):GetComponent("Text") frame.sprite=this.spLoader:LoadSprite(GetHeroQuantityImageByquality(itemConfig[id].Quantity)) icon.sprite=this.spLoader:LoadSprite(GetResourcePath(itemConfig[id].ResourceID)) num.text=info Util.AddOnceClick(frame.gameObject,function() UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,id) end) end for y=1,#itemData do itemGrid[y].gameObject:SetActive(true) local id=itemData[y][1]--物品ID local haveNum=BagManager.GetItemCountById(id)--已有物品数量 local needNum=itemData[y][2]--需要物品数量 local icon=Util.GetGameObject(itemGrid[y],"icon"):GetComponent("Image") local num=Util.GetGameObject(itemGrid[y],"num"):GetComponent("Text") icon.sprite=this.spLoader:LoadSprite(GetResourcePath(itemConfig[id].ResourceID)) if haveNum>=needNum then num.text=PrintWanNum2(needNum) else num.text=""..PrintWanNum2(needNum).."" end end end --右切换按钮点击 function TalismanInfoPanel:RightBtnOnClick() index = (index + 1 <= #_heroListData and index + 1 or 1) curHeroData = _heroListData[index] if HarmonyManager.IsChangeColor(curHeroData.dynamicId) then self:RightBtnOnClick() else self:OnShowPanelData() end end --左切换按钮点击 function TalismanInfoPanel:LeftBtnOnClick() index = (index - 1 > 0 and index - 1 or #_heroListData) curHeroData = _heroListData[index] if HarmonyManager.IsChangeColor(curHeroData.dynamicId) then self:LeftBtnOnClick() else self:OnShowPanelData() end end function TalismanInfoPanel:OnClose() end function TalismanInfoPanel:OnDestroy() this.spLoader:Destroy() SubUIManager.Close(self.upView) proList={} end return TalismanInfoPanel