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 equipSuit = {}--当前英雄穿戴装备的套装信息 [suitId] = 件数 local equipSuiteConfig = ConfigManager.GetConfig(ConfigName.EquipSuiteConfig) local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig) local _MainProList = {} local _NextProList = {} --初始化组件(用于子类重写) function RoleEquipChangePopup:InitComponent() 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.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].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].mainProGrid = Util.GetGameObject(this.equipPanel[i].bg,"mainPro/bg") this.equipPanel[i].curotherProscroll=Util.GetGameObject(this.equipPanel[i].bg,"scroll") this.equipPanel[i].otherProGrid=Util.GetGameObject(this.equipPanel[i].bg,"scroll/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].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 替换 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 curEquipData=data[4] end end function RoleEquipChangePopup:OnShow() if curHeroData then equipSuit = HeroManager.GetCurHeroEquipSuitPros(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].curEquipBtnDown:SetActive(true) this.equipPanel[1].curEquipBtnDownText.text = Language[12221] this.ShowCurEquipData(1) elseif type==3 then this.equipPanel[2].bg:SetActive(true) this.equipPanel[1].bg:SetActive(true) 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 for i = 1,#this.equipPanel do 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.equipPanel[index].bg1Star,data.id) this.equipPanel[index].desc.text= GetLanguageStrById(itemConfigData.ItemDescribe) 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 = Util.LoadSprite(GetQuantityImageByquality(equipConfigData.Quality)) this.equipPanel[index].curEquipIcon.sprite = Util.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=Util.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] 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) .. ")" if type == 2 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) .. ")" end end else this.equipPanel[1].curotherProscroll:SetActive(false) end 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=Util.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 end --界面关闭时调用(用于子类重写) function RoleEquipChangePopup:OnClose() end --界面销毁时调用(用于子类重写) function RoleEquipChangePopup:OnDestroy() curSuitProGo = {} nextSuitProGo = {} this.mainProList = {} end return RoleEquipChangePopup