require("Base/BasePanel") RoleEquipChangePopup = Inherit(BasePanel) local this=RoleEquipChangePopup local type--1 穿装备 2 卸装备 3 替换装备 local curHeroData local curEquipData local nextEquipData local openThisPanel local equipIdList local equipDataList local position local curSuitProGo = {}--当前套装属性对象 local nextSuitProGo = {}--将要替换套装属性对象 local BaiJinProGo = {}--白金套装属性对象 local equipSuit = {}--当前英雄穿戴装备的套装信息 [suitId] = 件数 local baijinSuit = {}--当前英雄穿戴装备的白金套装信息 [suitId] = 件数 local equipSuiteConfig = ConfigManager.GetConfig(ConfigName.EquipSuiteConfig) local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig) local passiveSkillConfig = ConfigManager.GetConfig(ConfigName.PassiveSkillConfig) local _MainProList = {} local _NextProList = {} local change --初始化组件(用于子类重写) function RoleEquipChangePopup:InitComponent() this.spLoader = SpriteLoader.New() this.btnBack= Util.GetGameObject(self.transform, "btnBack") this.go = Util.GetGameObject(self.transform, "GameObject") this.mainProItem = Util.GetGameObject(this.go,"curProName") this.mainProItem:SetActive(false) this.otherProPre=Util.GetGameObject(this.go,"otherPro") this.otherProPre:SetActive(false) this.baijinProPre=Util.GetGameObject(this.go,"baijinPro") this.baijinProPre:SetActive(false) this.equipPanel = {} for i = 1 ,2 do if not this.equipPanel[i] then this.equipPanel[i] = {} this.equipPanel[i].bg = Util.GetGameObject(this.go, "bg"..i) this.equipPanel[i].equipInfo = Util.GetGameObject(this.equipPanel[i].bg,"equipInfo") this.equipPanel[i].desc= Util.GetGameObject(this.equipPanel[i].equipInfo,"Text"):GetComponent("Text") this.equipPanel[i].curEquipName=Util.GetGameObject(this.equipPanel[i].equipInfo,"name/text"):GetComponent("Text") this.equipPanel[i].curEquipFrame=Util.GetGameObject(this.equipPanel[i].equipInfo,"frame"):GetComponent("Image") this.equipPanel[i].curEquipIcon=Util.GetGameObject(this.equipPanel[i].equipInfo,"icon"):GetComponent("Image") this.equipPanel[i].qualityText=Util.GetGameObject(this.equipPanel[i].equipInfo,"qualityText"):GetComponent("Text") this.equipPanel[i].powerNum1=Util.GetGameObject(this.equipPanel[i].equipInfo,"powerNum"):GetComponent("Text") this.equipPanel[i].powerUPorDown1=Util.GetGameObject(this.equipPanel[i].equipInfo,"powerUPorDown") this.equipPanel[i].bg1Star=Util.GetGameObject(this.equipPanel[i].equipInfo,"star") this.equipPanel[i].proGrid = Util.GetGameObject(this.equipPanel[i].equipInfo,"proGrid") this.equipPanel[i].effect = Util.GetGameObject(this.equipPanel[i].equipInfo,"UI_effect_WuCai_Kuang") this.equipPanel[i].curEquipTypeText=Util.GetGameObject(this.equipPanel[i].proGrid,"equipTypeText"):GetComponent("Text") this.equipPanel[i].curEquipLvText=Util.GetGameObject(this.equipPanel[i].proGrid,"equipLvText") this.equipPanel[i].curEquipLvText:SetActive(false) this.equipPanel[i].curEquipOrOkText=Util.GetGameObject(this.equipPanel[i].proGrid,"equipOrOkText"):GetComponent("Text") this.equipPanel[i].curEquipPosText=Util.GetGameObject(this.equipPanel[i].proGrid,"equipPosText"):GetComponent("Text") this.equipPanel[i].rect = Util.GetGameObject(this.equipPanel[i].bg,"rect") this.equipPanel[i].mainProGrid = Util.GetGameObject(this.equipPanel[i].bg,"rect/content/mainPro/bg") this.equipPanel[i].curotherProscroll=Util.GetGameObject(this.equipPanel[i].bg,"rect/content/scroll") this.equipPanel[i].otherProGrid=Util.GetGameObject(this.equipPanel[i].bg,"rect/content/scroll/grid") this.equipPanel[i].baijinScroll=Util.GetGameObject(this.equipPanel[i].bg,"rect/content/baijin") this.equipPanel[i].baijinProGrid=Util.GetGameObject(this.equipPanel[i].bg,"rect/content/baijin/grid") this.equipPanel[i].castInfoObject=Util.GetGameObject(this.equipPanel[i].bg,"castInfoObject") this.equipPanel[i].curCastInfo=Util.GetGameObject( this.equipPanel[i].castInfoObject,"castInfo"):GetComponent("Text") this.equipPanel[i].castInfoObject:SetActive(false) this.equipPanel[i].btns = Util.GetGameObject(this.equipPanel[i].bg,"btns") this.equipPanel[i].curEquipBtnRefresh=Util.GetGameObject(this.equipPanel[i].bg,"btns/btnRefresh") this.equipPanel[i].curEquipBtnRefresh.gameObject:SetActive(false) this.equipPanel[i].curEquipBtnDown=Util.GetGameObject(this.equipPanel[i].bg,"btns/btnChange") this.equipPanel[i].curEquipBtnDownText=Util.GetGameObject(this.equipPanel[i].curEquipBtnDown,"Text"):GetComponent("Text") this.equipPanel[i].curEquipText=Util.GetGameObject(this.equipPanel[i].bg,"btns/curEquipText") end end end --绑定事件(用于子类重写) function RoleEquipChangePopup:BindEvent() Util.AddClick(this.btnBack, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) for i = 1,#this.equipPanel do Util.AddClick(this.equipPanel[i].curEquipBtnDown, function() equipIdList={} equipDataList={} if i == 1 then table.insert(equipIdList,tostring(curEquipData.id)) table.insert(equipDataList,curEquipData) if type == 1 then NetManager.EquipWearRequest(curHeroData.dynamicId,equipIdList,1,function () self:ClosePanel() openThisPanel.UpdateEquipPosHeroData(1,type,equipDataList,0,position) end) else NetManager.EquipUnLoadOptRequest(curHeroData.dynamicId,equipIdList ,1, function () self:ClosePanel() openThisPanel.UpdateEquipPosHeroData(1,type,equipDataList) end) end elseif i == 2 then table.insert(equipIdList,tostring(nextEquipData.id)) table.insert(equipDataList,nextEquipData) NetManager.EquipWearRequest(curHeroData.dynamicId,equipIdList,1,function () self:ClosePanel() openThisPanel.UpdateEquipPosHeroData(1,type,equipDataList,curEquipData,position) end) end end) end end --添加事件监听(用于子类重写) function RoleEquipChangePopup:AddListener() end --移除事件监听(用于子类重写) function RoleEquipChangePopup:RemoveListener() end --界面打开时调用(用于子类重写) function RoleEquipChangePopup:OnOpen(...) local data={...} openThisPanel=data[1] type=data[2]--1 穿戴 2 卸下 3 替换 LogRed("OpenType:"..tostring(type)) if type==1 or type==2 then curHeroData=data[3] curEquipData=data[4] position=data[5] elseif type==3 then curHeroData=data[3] curEquipData=data[4] nextEquipData=data[5] position=data[6] elseif type==4 then curHeroData=data[3] curEquipData=data[4] nextEquipData=data[5] position=data[6] end change = data[7] end function RoleEquipChangePopup:OnShow() equipSuit = {} baijinSuit = {} if curHeroData then equipSuit = HeroManager.GetCurHeroEquipSuitPros(curHeroData.equipIdList) baijinSuit = HeroManager.GetCurHeroBaiJinEquipSuitPros(curHeroData.equipIdList) end if type==1 then this.equipPanel[2].bg:SetActive(false) this.equipPanel[1].bg:SetActive(true) this.equipPanel[1].curEquipText:SetActive(false) this.equipPanel[1].curEquipBtnDown:SetActive(true) this.equipPanel[1].curEquipBtnDownText.text = Language[12220] this.ShowCurEquipData(1) elseif type==2 then this.equipPanel[2].bg:SetActive(false) this.equipPanel[1].bg:SetActive(true) this.equipPanel[1].curEquipText:SetActive(false) this.equipPanel[1].curEquipBtnDownText.text = Language[12221] if HarmonyManager:IsShowGongMingEqiup(curHeroData.dynamicId) and curHeroData.harmonyGongMing then this.equipPanel[1].curEquipBtnDown:SetActive(false) else this.equipPanel[1].curEquipBtnDown:SetActive(true) end this.ShowCurEquipData(1) elseif type==3 then this.equipPanel[2].bg:SetActive(true) this.equipPanel[1].bg:SetActive(false) this.equipPanel[1].curEquipText:SetActive(true) this.equipPanel[2].curEquipText:SetActive(false) this.equipPanel[1].curEquipBtnDown:SetActive(false) this.equipPanel[2].curEquipBtnDown:SetActive(true) this.equipPanel[2].curEquipBtnDownText.text = Language[12261] --"替 换" -- this.ShowCurEquipData(2) this.NextCurEquipData() elseif type==4 then this.equipPanel[2].bg:SetActive(false) this.equipPanel[1].bg:SetActive(true) this.equipPanel[1].curEquipText:SetActive(false) this.equipPanel[1].curEquipBtnDown:SetActive(false) this.ShowCurEquipData(4) end if change and change == 0 then for k,v in ipairs(this.equipPanel) do v .btns.gameObject:SetActive(false) end else for k,v in ipairs(this.equipPanel) do v .btns.gameObject:SetActive(true) end end for i = 1,#this.equipPanel do ForceRebuildLayout(this.equipPanel[i].baijinProGrid.transform) ForceRebuildLayout(this.equipPanel[i].rect.transform) ForceRebuildLayout(this.equipPanel[i].bg.transform) end ForceRebuildLayout(this.go.transform) end function this.SetEquipData(index,data,equipConfigData,itemConfigData) this.equipPanel[index].powerNum1.text=EquipManager.CalculateWarForce(data.id) EquipManager.SetEquipStarShow(this.spLoader, this.equipPanel[index].bg1Star,data.id) this.equipPanel[index].desc.text= GetLanguageStrById(itemConfigData.ItemDescribe) this.equipPanel[index].effect:SetActive(equipConfigData.Quality>=7) this.equipPanel[index].qualityText.text= GetStringByEquipQua(equipConfigData.Quality,GetQuaStringByEquipQua(equipConfigData.Quality)) this.equipPanel[index].curEquipName.text=GetStringByEquipQua(equipConfigData.Quality,GetLanguageStrById(equipConfigData.Name)) this.equipPanel[index].curEquipFrame.sprite = this.spLoader:LoadSprite(GetQuantityImageByquality(equipConfigData.Quality)) this.equipPanel[index].curEquipIcon.sprite = this.spLoader:LoadSprite(GetResourcePath(itemConfigData.ResourceID)) this.equipPanel[index].curEquipTypeText.text=string.format(Language[11555],GetEquipPosStrByEquipPosNum(equipConfigData.Position)) -- local strPos="" -- if equipConfigData.ProfessionLimit==0 then -- strPos= "装备种类:%s" -- else -- strPos= "装备种类:%s" -- end -- this.equipPanel[index].curEquipPosText.text=string.format(strPos,GetJobStrByJobNum(equipConfigData.ProfessionLimit)) this.equipPanel[index].curEquipPosText.text=string.format(Language[12262],GetEquipPosStrByEquipPosNum(equipConfigData.Position)) if not this.mainProList then this.mainProList = {} end if not this.mainProList[index] then this.mainProList[index] = {} end for _, item in ipairs(this.mainProList[index]) do item:SetActive(false) end local mainAttribute=EquipManager.GetMainProList(equipConfigData) for key, prop in ipairs(mainAttribute) do local proConfigData = ConfigManager.GetConfigData(ConfigName.PropertyConfig, prop.propertyId) if proConfigData then if not this.mainProList[index][key] then this.mainProList[index][key] = newObjToParent(this.mainProItem, this.equipPanel[index].mainProGrid) end this.mainProList[index][key]:SetActive(true) this.mainProList[index][key]:GetComponent("Text").text = GetLanguageStrById(proConfigData.Info) local vText = Util.GetGameObject(this.mainProList[index][key], "curProVale"):GetComponent("Text") if prop.propertyValue > 0 then vText.text = "+"..GetPropertyFormatStr(proConfigData.Style, prop.propertyValue) else vText.text = GetPropertyFormatStr(proConfigData.Style, prop.propertyValue) end end end end -- 1 当前 2 下一个 function this.ShowCurEquipData(index) local equipConfigData=ConfigManager.GetConfigData(ConfigName.EquipConfig, curEquipData.id) local itemConfigData=ConfigManager.GetConfigData(ConfigName.ItemConfig, curEquipData.id) this.SetEquipData(1,curEquipData,equipConfigData,itemConfigData) this.equipPanel[1].powerUPorDown1:SetActive(false) if(nextEquipData~=nil and index==2) then if(EquipManager.CalculateWarForce(nextEquipData.id)EquipManager.CalculateWarForce(curEquipData.id)) then this.equipPanel[1].powerUPorDown1:SetActive(true) this.equipPanel[1].powerUPorDown1:GetComponent("Image").sprite=this.spLoader:LoadSprite(PowerChangeIconDef[2]) end end --套装属性 local endProList = {} if type == 1 or #equipSuit <= 0 then --LogGreen("equipConfigData.Star111111:"..equipConfigData.Star) if equipSuiteConfig[equipConfigData.Star] then for i = 1, #equipSuiteConfig[equipConfigData.Star].SuiteValue do table.insert(endProList,{equipConfigData.Star,equipSuiteConfig[equipConfigData.Star].SuiteValue[i]}) end end else endProList = equipSuit end if endProList and #endProList > 0 then this.equipPanel[1].curotherProscroll:SetActive(true) for i = 1, math.max(#endProList, #curSuitProGo) do if not curSuitProGo[i] then curSuitProGo[i] = newObjToParent(this.otherProPre,this.equipPanel[1].otherProGrid) end curSuitProGo[i].gameObject:SetActive(false) end for i = 1, #endProList do local go = curSuitProGo[i] go.gameObject:SetActive(true) --type=data[2]--1 穿戴 2 卸下 3 替换 local proId = endProList[i][2][2] local proVa = endProList[i][2][3] local suitNum = endProList[i][2][1] local Star = endProList[i][1] LogGreen("#equipSuit:"..tostring(#equipSuit)) if type ~= 1 and #equipSuit > 0 then--激活的要变颜色 Util.GetGameObject(go.transform, "curProName"):GetComponent("Text").text = "" .. GetLanguageStrById(propertyConfig[proId].Info) .."+ "..GetPropertyFormatStr(propertyConfig[proId].Style,proVa) .. "" Util.GetGameObject(go.transform, "curProVale"):GetComponent("Text").text = "(" .. GetEquipSuitStr(Star,suitNum) .. ")" else Util.GetGameObject(go.transform, "curProName"):GetComponent("Text").text = "" .. GetLanguageStrById(propertyConfig[proId].Info) .."+ "..GetPropertyFormatStr(propertyConfig[proId].Style,proVa) .. "" Util.GetGameObject(go.transform, "curProVale"):GetComponent("Text").text = "(" .. GetEquipSuitStr(Star,suitNum) .. ")" end end else this.equipPanel[1].curotherProscroll:SetActive(false) end -- 设置白金装备套装 this.SetBaijinProShow(1, curEquipData,equipConfigData,itemConfigData) end function this.NextCurEquipData() local equipConfigData=ConfigManager.GetConfigData(ConfigName.EquipConfig, nextEquipData.id) local itemConfigData=ConfigManager.GetConfigData(ConfigName.ItemConfig, nextEquipData.id) this.SetEquipData(2,nextEquipData,equipConfigData,itemConfigData) this.equipPanel[2].powerUPorDown1:SetActive(false) if(EquipManager.CalculateWarForce(nextEquipData.id)>EquipManager.CalculateWarForce(curEquipData.id)) then this.equipPanel[2].powerUPorDown1:SetActive(true) this.equipPanel[2].powerUPorDown1:GetComponent("Image").sprite=this.spLoader:LoadSprite(PowerChangeIconDef[1]) elseif(EquipManager.CalculateWarForce(nextEquipData.id)" Util.GetGameObject(go.transform, "curProVale"):GetComponent("Text").text = "(+" .. GetEquipSuitStr(equipConfigData.Star,curSuitConFig.SuiteValue[i][1]) .. ")" end end else this.equipPanel[2].curotherProscroll:SetActive(false) end -- 设置白金装备套装 this.SetBaijinProShow(2, curEquipData, equipConfigData,itemConfigData) end -- 设置白金装备套装显示 function this.SetBaijinProShow(CurOrNext, equipData, equipCfg, itemCfg) local equipPanel = this.equipPanel[CurOrNext] if not BaiJinProGo[CurOrNext] then BaiJinProGo[CurOrNext] = {} end local proGoList = BaiJinProGo[CurOrNext] local endProList = {} local isGreen = false if CurOrNext == 2 or type == 1 or #baijinSuit <= 0 then if equipSuiteConfig[equipCfg.Star] and equipSuiteConfig[equipCfg.Star].SuiteSkill then for i = 1, #equipSuiteConfig[equipCfg.Star].SuiteSkill do table.insert(endProList,{equipCfg.Star,equipSuiteConfig[equipCfg.Star].SuiteSkill[i]}) end end else endProList = baijinSuit isGreen = true end if endProList and #endProList > 0 then equipPanel.baijinScroll:SetActive(true) -- this.SetScrollActive(CurOrNext, type == 3) for i = 1, math.max(#endProList, #proGoList) do if not proGoList[i] then proGoList[i] = newObjToParent(this.baijinProPre,equipPanel.baijinProGrid) end proGoList[i].gameObject:SetActive(false) end for i = 1, #endProList do local go = proGoList[i] go.gameObject:SetActive(true) --type=data[2]--1 穿戴 2 卸下 3 替换 local Star = endProList[i][1] local suitNum = endProList[i][2][1] local passiveId = endProList[i][2][2] Util.GetGameObject(go.transform, "title"):GetComponent("Text").text = "不朽天赋" ..i.. ":" if isGreen then--激活的要变颜色 go:GetComponent("Text").text = "" .. GetLanguageStrById(passiveSkillConfig[passiveId].Desc) .. "" Util.GetGameObject(go.transform, "title/vale"):GetComponent("Text").text = "(" .. GetEquipSuitStr(Star,suitNum) .. ")" else go:GetComponent("Text").text = "" .. GetLanguageStrById(passiveSkillConfig[passiveId].Desc) .. "" Util.GetGameObject(go.transform, "title/vale"):GetComponent("Text").text = "(" .. GetEquipSuitStr(Star,suitNum) .. ")" end end else equipPanel.baijinScroll:SetActive(false) -- this.SetScrollActive(CurOrNext, false) end end -- 开启白金套装后要可以滑动 function this.SetScrollActive(CurOrNext, isScroll) local rect = this.equipPanel[CurOrNext].rect if isScroll then rect:GetComponent("VerticalLayoutGroup").enabled = false rect:GetComponent("ContentSizeFitter").enabled = false rect:GetComponent("ScrollRect").enabled = true rect.transform.sizeDelta = Vector2.New(800, 400) Util.GetGameObject(rect, "content").transform.localPosition = Vector2.New(-350, -100) else rect:GetComponent("VerticalLayoutGroup").enabled = true rect:GetComponent("ContentSizeFitter").enabled = true rect:GetComponent("ScrollRect").enabled = false end end --界面关闭时调用(用于子类重写) function RoleEquipChangePopup:OnClose() end --界面销毁时调用(用于子类重写) function RoleEquipChangePopup:OnDestroy() this.spLoader:Destroy() curSuitProGo = {} nextSuitProGo = {} this.mainProList = {} -- 重置数据 baijinSuit = {} BaiJinProGo = {} end return RoleEquipChangePopup