require("Base/BasePanel") local spcialConfig = ConfigManager.GetConfig(ConfigName.SpecialConfig) RoleEquipPanel = Inherit(BasePanel) --local SortTypeConst = { -- Natural = 1,--品阶 ur+ --> r 6 --> 1 -- Lv = 2 --} local PosIdConst = { All = 0,--全部 WuQi = 1,--武器 ZhanFu = 2,--战服 TouShi = 3,--头饰 ZhanXue = 4,--战靴 Hun = 5,--魂宝 Ling = 6,--灵宝 } local this=RoleEquipPanel local curHeroEquipDatas={} local curHeroData local heroListData local curSelectEquipData local index local indexBtnNum=0 local typeTab = { "武器", "战服", "头饰", "战靴", "魂宝","灵宝" } local tabs = {} local openThisPanel local effectList={} local orginLayer1 local orginLayer local isUpZhen = false local teamHero = {} local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local jewerConfigs = ConfigManager.GetConfig(ConfigName.JewelConfig) local currPageIndex=0 local curEquipTreasureDatas = {} local isCanUpEquipTreasure = false --初始化组件(用于子类重写)RoleEquipChangePopup function RoleEquipPanel:InitComponent() orginLayer = 10 orginLayer1={0,0,0,0,0,0} this.bg2 = Util.GetGameObject(self.transform,"bg2") screenAdapte(this.bg2) this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft}) this.btnBack= Util.GetGameObject(self.transform, "btnBack/btnBack") --英雄 this.heroBg = Util.GetGameObject(self.transform, "bg/heroInfo/bg"):GetComponent("Image") this.heroLv = Util.GetGameObject(self.transform, "bg/heroInfo/lv/Text"):GetComponent("Text") this.heroIcon = Util.GetGameObject(self.transform, "bg/heroInfo/icon"):GetComponent("Image") this.heroPosIcon = Util.GetGameObject(self.transform, "bg/heroInfo/pos/icon"):GetComponent("Image") this.heroProIcon = Util.GetGameObject(self.transform, "bg/heroInfo/pro/Image"):GetComponent("Image") --this.heroStage = Util.GetGameObject(self.transform, "bg/heroInfo/heroStage"):GetComponent("Image") Util.GetGameObject(self.transform, "bg/heroInfo/heroStage"):SetActive(false) this.heroStarGrid = Util.GetGameObject(self.transform, "bg/heroInfo/star") this.heroStarPre = Util.GetGameObject(self.transform, "bg/heroInfo/starPre") --英雄身上的装备 this.equipGrid=Util.GetGameObject(self.transform,"bg/equipInfo") local scale = (Screen.width / Screen.height / 1080 * 1920 + 1) / 2 if scale < 1 then for i = 1, this.equipGrid.transform.childCount do Util.SetParticleScale(Util.GetGameObject(this.equipGrid.transform:GetChild(i-1),"effect"), scale) end end --装备list this.effect=Util.GetGameObject(self.transform,"bg/effect") for i = 0, 6 do tabs[i] = Util.GetGameObject(self.transform, "Tabs/Btn" .. i) effectList[i] = Util.GetGameObject(self.transform, "bg/equipInfo/equip".. i.."/effect") end this.selectBtn = Util.GetGameObject(self.gameObject, "selectBtn") this.btnPrant = Util.GetGameObject(self.gameObject, "Tabs") this.equipPre = Util.GetGameObject(self.gameObject, "equipPre") this.grid = Util.GetGameObject(self.gameObject, "scroll/grid") this.selsectSkillImage=Util.GetGameObject(self.gameObject, "selsectSkillImage") this.ShaiXuanBtn = Util.GetGameObject(self.gameObject, "ShaiXuanBtn") this.ShaiXuanBtn:SetActive(false) this.ShaiXuanBtnLv = Util.GetGameObject(self.gameObject, "ShaiXuanBtn/Lv") this.ShaiXuanBtnQu = Util.GetGameObject(self.gameObject, "ShaiXuanBtn/Qu") this.leftBtn = Util.GetGameObject(self.transform, "leftBtn/GameObject") this.rightBtn = Util.GetGameObject(self.transform, "rightBtn/GameObject") this.allEquipUp = Util.GetGameObject(self.transform, "allEquipUp") this.allEquipDown = Util.GetGameObject(self.transform, "allEquipDown") this.allEquipUpRedPoint=Util.GetGameObject(self.transform,"allEquipUp/redPoint") this.ScrollBar=Util.GetGameObject(self.gameObject, "Scrollbar"):GetComponent("Scrollbar") local v2 = Util.GetGameObject(self.gameObject, "scroll"):GetComponent("RectTransform").rect this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(self.transform, "scroll").transform, this.equipPre, this.ScrollBar, Vector2.New(-v2.x*2, -v2.y*2), 1, 5, Vector2.New(50,15)) this.ScrollView.moveTween.MomentumAmount = 1 this.ScrollView.moveTween.Strength = 1 this.force = Util.GetGameObject(self.transform, "powerBtn/value"):GetComponent("Text") this.itemNumText = Util.GetGameObject(self.transform, "itemNumText"):GetComponent("Text") this.upLvEffect = Util.GetGameObject(self.transform,"powerBtn/effect") this.equipTreasureBtn = Util.GetGameObject(self.transform,"equipTreasureBtn") this.treasure1=Util.GetGameObject(self.transform,"bg/equipInfo/equip5") this.treasure2=Util.GetGameObject(self.transform,"bg/equipInfo/equip6") this.treasurePage1=Util.GetGameObject(self.transform,"Tabs/Btn5") this.treasurePage2=Util.GetGameObject(self.transform,"Tabs/Btn6") this.emptyObj=Util.GetGameObject(self.transform,"emptyObj") this.emptyObj.gameObject:SetActive(false) end --绑定事件(用于子类重写) function RoleEquipPanel:BindEvent() Util.AddClick(this.btnBack, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) if openThisPanel.RefreshHeroDatas then openThisPanel:RefreshHeroDatas(curHeroData,HeroManager.GetAllHeroDatas()) end self:ClosePanel() end) Util.AddClick(this.leftBtn, function() this:LeftBtnOnClick() end) Util.AddClick(this.rightBtn, function() this:RightBtnOnClick() end) Util.AddClick(this.allEquipUp, function() this:AllEquipUpBtnOnClick() end) Util.AddClick(this.allEquipDown, function() this:AllEquipDownBtnOnClick() end) for i = 0, 6 do Util.AddClick(tabs[i], function() if i == indexBtnNum then indexBtnNum=PosIdConst.All this:OnClickAllBtn() else indexBtnNum=i this:OnClickTabBtn(indexBtnNum) end end) end Util.AddClick(this.equipTreasureBtn, function() if LengthOfTable(curEquipTreasureDatas)<2 then PopupTipPanel.ShowTip("共鸣需同时穿戴魂宝和灵宝") return end UIManager.OpenPanel(UIName.EquipTreasureResonancePanel,curHeroData) end) end --添加事件监听(用于子类重写) function RoleEquipPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.Treasure.TreasureLvUp, this.CurrEquipDataChange) end --移除事件监听(用于子类重写) function RoleEquipPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.Treasure.TreasureLvUp, this.CurrEquipDataChange) end function this.CurrEquipDataChange() this.ShowHeroEquip() if indexBtnNum == PosIdConst.All then this:OnClickAllBtn() else this:OnClickTabBtn(indexBtnNum) end end --界面打开时调用(用于子类重写) function RoleEquipPanel:OnOpen(...) local data={...} if data[1] then curHeroData=data[1] HeroManager.roleEquipPanelCurHeroData=data[1] else curHeroData=HeroManager.roleEquipPanelCurHeroData end if data[2] then heroListData=data[2] HeroManager.roleEquipPanelHeroListData=data[2] else heroListData=HeroManager.GetAllHeroDatas() end openThisPanel=data[3] isUpZhen = data[4] end function RoleEquipPanel:OnShow() for i = 1, #heroListData do if curHeroData == heroListData[i] then index = i end end for i = 1, 6 do if(effectList[i]~=nil) then effectList[i]:SetActive(false) end end indexBtnNum=PosIdConst.All teamHero=FormationManager.GetAllFormationHeroId() this.ShowHeroEquip(true) this:OnClickAllBtn() this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main }) end function this:OnSortingOrderChange() Util.AddParticleSortLayer(this.effect, this.sortingOrder - orginLayer) orginLayer = this.sortingOrder end --右切换按钮点击 function this:RightBtnOnClick() index = (index + 1 <= #heroListData and index + 1 or 1) curHeroData = heroListData[index] this.ShowHeroEquip() if indexBtnNum == PosIdConst.All then this:OnClickAllBtn() else this:OnClickTabBtn(indexBtnNum) end end --左切换按钮点击 function this:LeftBtnOnClick() index = (index - 1 > 0 and index - 1 or #heroListData) curHeroData = heroListData[index] this.ShowHeroEquip() if indexBtnNum == PosIdConst.All then this:OnClickAllBtn() else this:OnClickTabBtn(indexBtnNum) end end --一键装备 function this:AllEquipUpBtnOnClick() local allEquipIds={} local allTreasureIds={} --计算英雄身上的所有装备位的装备 local curHeroEquipDatas={} for k,v in ipairs(curHeroData.equipIdList) do local equipData=EquipManager.GetSingleEquipData(v) if equipData~=nil then curHeroEquipDatas[equipData.equipConfig.Position]=equipData end end --宝物数据 for k,v in ipairs(curHeroData.jewels) do local equipData=EquipTreasureManager.GetSingleTreasureByIdDyn(v) if equipData~=nil then curHeroEquipDatas[equipData.equipType+4]=equipData end end local equipEffectPos={} local treasureEffectPos={} --如果身上的装备 带锁 则不替换 for i = 1, 6 do local curPosEquip = {} local index=i if curHeroEquipDatas[i] then if curHeroEquipDatas[i].isLocked == 0 then curPosEquip = EquipManager.GetEquipDataByEquipJobAndPos(i,curHeroData.heroConfig.Profession,curHeroData.dynamicId) else curPosEquip = {curHeroEquipDatas[i]} end else if index==5 or index==6 and isCanUpEquipTreasure then curPosEquip=EquipTreasureManager.GetTreasureDataByPos(index,curHeroData.dynamicId,curHeroData.heroConfig.PropertyName) else curPosEquip = EquipManager.GetEquipDataByEquipJobAndPos(i,curHeroData.heroConfig.Profession,curHeroData.dynamicId) end end --计算每个位置可装备的装备战力 取战力最大的装备 if curPosEquip and #curPosEquip>0 then local equiData={} local indexMaxPower=0 for i = 1, #curPosEquip do local addPower=0 local curEquip = curPosEquip[i] if curEquip then if curEquip.idDyn then addPower=EquipTreasureManager.CalculateWarForce(curEquip.idDyn) else addPower = EquipManager.CalculateWarForce(curEquip.did) end end if addPower>=indexMaxPower then indexMaxPower=addPower equiData=curEquip end end if equiData.idDyn and isCanUpEquipTreasure then table.insert(allTreasureIds,equiData.idDyn) else table.insert(allEquipIds,equiData.did) end --特效 if curHeroEquipDatas[equiData.position] then if equiData.idDyn then if equiData.idDyn ~= curHeroEquipDatas[equiData.position].idDyn then table.insert(treasureEffectPos,i) end else if equiData.did ~= curHeroEquipDatas[equiData.position].did then table.insert(equipEffectPos,i) end end else --table.insert(showEffectPos,i) end end end --isCanUpEquipTreasure if allEquipIds and #allEquipIds>0 then --for i = 1, #allEquipIds do -- LogGreen(curHeroData.dynamicId.. " "..curHeroData.id .." "..curHeroData.lv.." 一键穿装备 "..i.." "..allEquipIds[i]) --end --穿装备协议 NetManager.EquipWearRequest(curHeroData.dynamicId,allEquipIds ,1,function () this.UpdateEquipPosHeroData(1,4,allEquipIds) --特效播放 if equipEffectPos then for i = 1, #equipEffectPos do effectList[equipEffectPos[i]]:SetActive(false) effectList[equipEffectPos[i]]:SetActive(true) end end end) else PopupTipPanel.ShowTip("没有装备可装备!") end --6星英雄才能穿宝物 if isCanUpEquipTreasure then if curHeroData.star >=6 then --穿戴宝物 if allTreasureIds and #allTreasureIds>0 then --for i = 1, #allEquipIds do -- Log(curHeroData.dynamicId.. " "..curHeroData.id .." "..curHeroData.lv.." 一键宝物 "..i.." "..allEquipIds[i]) --end --穿装备协议 NetManager.EquipWearRequest(curHeroData.dynamicId,allTreasureIds ,2,function () this.UpdateEquipPosHeroData(2,4,allTreasureIds) --特效播放 for i, v in pairs(treasureEffectPos) do effectList[v]:SetActive(false) effectList[v]:SetActive(true) end end) else PopupTipPanel.ShowTip("没有宝物可装备!") end end end PlaySoundWithoutClick(SoundConfig.Sound_Wear) this.ShowHeroEquip() end --一键卸下 function this:AllEquipDownBtnOnClick() if curHeroData.equipIdList and #curHeroData.equipIdList>0 then NetManager.EquipUnLoadOptRequest(curHeroData.dynamicId,curHeroData.equipIdList,1 ,function () this.UpdateEquipPosHeroData(1,5,curHeroData.equipIdList) end) else PopupTipPanel.ShowTip("没有装备可卸下!") end --寶物 if curHeroData.jewels and #curHeroData.jewels>0 then NetManager.EquipUnLoadOptRequest(curHeroData.dynamicId,curHeroData.jewels,2 ,function () this.UpdateEquipPosHeroData(2,5,curHeroData.jewels) end) -- 一键卸下音效 else PopupTipPanel.ShowTip("没有装备可卸下!") end PlaySoundWithoutClick(SoundConfig.Sound_TakeOff) this.ShowHeroEquip() -- this:OnClickTabBtn(indexBtnNum) end function this.ShowHeroEquip() --装备 if curHeroData and spcialConfig then local config=spcialConfig[40] if config then local limits = string.split(config.Value, "|") if limits then local heroConfig=ConfigManager.GetConfigData(ConfigName.HeroConfig,curHeroData.id) local lvs=string.split(limits[1],"#") local stars=string.split(limits[2],"#") if PlayerManager.level>=tonumber(lvs[2]) and heroConfig~=nil and heroConfig.MaxRank>=tonumber(stars[2]) then isCanUpEquipTreasure = true this.equipTreasureBtn.gameObject:SetActive(true) this.treasure1.gameObject:SetActive(true) this.treasure2.gameObject:SetActive(true) this.treasurePage1.gameObject:SetActive(true) this.treasurePage2.gameObject:SetActive(true) else isCanUpEquipTreasure = false this.equipTreasureBtn.gameObject:SetActive(false) this.treasure1.gameObject:SetActive(false) this.treasure2.gameObject:SetActive(false) this.treasurePage1.gameObject:SetActive(false) this.treasurePage2.gameObject:SetActive(false) end end end end this.heroBg.sprite = Util.LoadSprite(GetHeroCardQuantityImage[curHeroData.heroConfig.Quality]) this.heroLv.text = curHeroData.lv this.heroIcon.sprite = Util.LoadSprite(curHeroData.painting) this.heroPosIcon.sprite = Util.LoadSprite(curHeroData.professionIcon) this.heroProIcon.sprite = Util.LoadSprite(GetProStrImageByProNum(curHeroData.heroConfig.PropertyName)) --this.heroStage.sprite = Util.LoadSprite(HeroStageSprite[curHeroData.heroConfig.HeroStage]) SetHeroStars(this.heroStarGrid, curHeroData.star) --装备的数据 curHeroEquipDatas={} for i = 1, #curHeroData.equipIdList do local equipData=EquipManager.GetSingleEquipData(curHeroData.equipIdList[i]) if equipData~=nil then curHeroEquipDatas[equipData.equipConfig.Position]=equipData end end --宝器的数据 curEquipTreasureDatas={} --LogError("#curHeroData.jewels "..#curHeroData.jewels) for i = 1, #curHeroData.jewels do local treasureData=EquipTreasureManager.GetSingleEquipTreasreData(curHeroData.jewels[i]) if treasureData~=nil then local id=treasureData.id local pos=jewerConfigs[id].Location+4 curEquipTreasureDatas[pos]=treasureData end end --this.equipTreasureBtn:SetActive(LengthOfTable(curEquipTreasureDatas) >= 2) for i = 1, this.equipGrid.transform.childCount do local go= this.equipGrid.transform:GetChild(i-1).gameObject local effect= Util.GetGameObject(go.transform,"effect") screenAdapte(effect) Util.AddParticleSortLayer(effect, this.sortingOrder - orginLayer1[i]) orginLayer1[i]=this.sortingOrder effectList[i]=effect local lvObj=Util.GetGameObject(go.transform,"lv") local refineObj=Util.GetGameObject(go.transform,"refine") if curHeroEquipDatas[i] then Util.GetGameObject(go.transform,"frame"):SetActive(true) Util.GetGameObject(go.transform,"mask"):SetActive(false) --Util.GetGameObject(go.transform,"proIcon"):SetActive(false) Util.GetGameObject(go.transform,"frame/icon"):GetComponent("Image").sprite=Util.LoadSprite(curHeroEquipDatas[i].icon) Util.GetGameObject(go.transform,"frame"):GetComponent("Image").sprite=Util.LoadSprite(curHeroEquipDatas[i].frame) --Util.GetGameObject(go.transform,"proIcon"):GetComponent("Image").sprite=Util.LoadSprite(curHeroEquipDatas[i].frame) if lvObj then lvObj:SetActive(false) end if refineObj then refineObj:SetActive(false) end EquipManager.SetEquipStarShow(Util.GetGameObject(go.transform,"frame/star"),curHeroEquipDatas[i].itemConfig.Id) elseif curEquipTreasureDatas[i] then Util.GetGameObject(go.transform,"frame"):SetActive(true) Util.GetGameObject(go.transform,"mask"):SetActive(false) --Util.GetGameObject(go.transform,"proIcon"):SetActive(true) Util.GetGameObject(go.transform,"frame/icon"):GetComponent("Image").sprite=Util.LoadSprite(curEquipTreasureDatas[i].icon) Util.GetGameObject(go.transform,"frame"):GetComponent("Image").sprite=Util.LoadSprite(curEquipTreasureDatas[i].frame) --Util.GetGameObject(go.transform,"proIcon"):GetComponent("Image").sprite=Util.LoadSprite(GetProStrImageByProNum(curEquipTreasureDatas[i].itemConfig.PropertyName)) Util.GetGameObject(go.transform,"frame/star"):SetActive(false) Util.GetGameObject(go.transform,"num").gameObject:SetActive(false) if curEquipTreasureDatas[i].lv>0 and lvObj then lvObj:GetComponent("Text").text=curEquipTreasureDatas[i].lv lvObj:SetActive(true) else lvObj:SetActive(false) end if curEquipTreasureDatas[i].refineLv>0 then refineObj:GetComponent("Text").text="+" ..curEquipTreasureDatas[i].refineLv refineObj:SetActive(true) else refineObj:SetActive(false) end else Util.GetGameObject(go.transform,"frame"):SetActive(false) Util.GetGameObject(go.transform,"mask"):SetActive(true) if Util.GetGameObject(go.transform,"num") then Util.GetGameObject(go.transform,"num").gameObject:SetActive(false) end if lvObj then lvObj:SetActive(false) end if refineObj then refineObj:SetActive(false) end end local iconBtn=Util.GetGameObject(go.transform,"icon") Util.AddOnceClick(iconBtn, function() if curHeroEquipDatas[i] then curSelectEquipData=curHeroEquipDatas[i] UIManager.OpenPanel(UIName.RoleEquipChangePopup,this,2,curHeroData,curHeroEquipDatas[i]) elseif curEquipTreasureDatas[i] then if itemConfig[curEquipTreasureDatas[i].id].ItemType == ItemType.EquipTreasure then local pos=0; local jewerConfig=ConfigManager.TryGetConfigData(ConfigName.JewelConfig,curEquipTreasureDatas[i].id) if jewerConfig then if jewerConfig.Location==1 then pos=5 elseif jewerConfig.Location==2 then pos=6 end UIManager.OpenPanel(UIName.RoleEquipTreasureChangePopup,this,2,curHeroData,curEquipTreasureDatas[i],nil,pos) end end end end) end local allAddProVal=HeroManager.CalculateHeroAllProValList(1,curHeroData.dynamicId,false) this.force.text =allAddProVal[HeroProType.WarPower] end function this:SetSelectBtn() this.selectBtn:SetActive(indexBtnNum ~= PosIdConst.All) if indexBtnNum ~= PosIdConst.All then this.selectBtn.transform:SetParent(tabs[indexBtnNum].transform) this.selectBtn.transform.localPosition =Vector3(0,-8,0) --this.selectBtn.transform.localScale = Vector3.one --this.selectBtn:GetComponent("Image"):SetNativeSize() Util.GetGameObject(this.selectBtn.transform, "Text"):GetComponent("Text").text = typeTab[indexBtnNum] end end --点击全部按钮 function this:OnClickAllBtn() this:SetSelectBtn() local itemData = EquipManager.GetAllEquipData() itemData=this:EquipListFilter(itemData) itemData = this:EquipDJDatas(itemData) this:SortEquipDatas(itemData) --加上宝器数据 local curAllEquipTreasure = EquipTreasureManager.GetAllTreasures(curHeroData.heroConfig.PropertyName) --宝器排序 for i=1,#curAllEquipTreasure do table.insert( itemData, curAllEquipTreasure[i] ) end this:SetItemData(itemData) end --点击装备按钮 function this:OnClickTabBtn(_index) this:SetSelectBtn() if _index < 5 then local allEquip allEquip = EquipManager.GetEquipDataByEquipPosition(_index) allEquip=this:EquipListFilter(allEquip) allEquip = this:EquipDJDatas(allEquip) this:SortEquipDatas(allEquip) this:SetItemData(allEquip) else local allEquipTreasure allEquipTreasure = EquipTreasureManager.GetAllTreasuresByLocation(_index - 4,curHeroData.heroConfig.PropertyName) table.sort(allEquipTreasure, function(a, b) if a.refineLv == b.refineLv then if a.lv == b.lv then return a.id > b.id else return a.lv > b.lv end else return a.refineLv > b.refineLv end end) this:SetItemData(allEquipTreasure) end end --设置背包列表数据 local curHeroCanUpEquipTabs = {} function this:SetItemData(_itemDatas) --LogError(" " ..LengthOfTable(_itemDatas) ) this.itemNumText.text = "装备数量:"..LengthOfTable(_itemDatas) if LengthOfTable(_itemDatas)==0 then this.emptyObj.gameObject:SetActive(true) else this.emptyObj.gameObject:SetActive(false) end --this:SortEquipDatas(_itemDatas) --做装备叠加特殊组拼数据 -- local equips = {} -- for i = 1, #_itemDatas do -- --table.insert(equips,v) -- if equips[_itemDatas[i].id] then -- equips[_itemDatas[i].id].num = equips[_itemDatas[i].id].num + 1 -- else -- equips[_itemDatas[i].id] = _itemDatas[i] -- equips[_itemDatas[i].id].num = 1 -- end -- end -- local showList = {} -- for i, v in pairs(equips) do -- table.insert(showList, v) -- end this.ScrollView:SetData(_itemDatas, function (index, go) this.SingleItemDataShow(go, _itemDatas[index]) end) end function this.SingleItemDataShow(_go,_itemData) if not itemConfig[_itemData.id] then return end local frame = Util.GetGameObject(_go.transform,"frame"):GetComponent("Image") local icon =Util.GetGameObject(_go.transform,"icon"):GetComponent("Image") local name = Util.GetGameObject(_go.transform,"name"):GetComponent("Text") local star = Util.GetGameObject(_go.transform,"star") local proIcon = Util.GetGameObject(_go.transform,"proIcon") local jewerConfig=ConfigManager.TryGetConfigData(ConfigName.JewelConfig, _itemData.id) local pos=0; if jewerConfig then if jewerConfig.Location==1 then pos=5 else if jewerConfig.Location==2 then pos=6 end end end local lvObj=Util.GetGameObject(_go.transform,"lv"):GetComponent("Text") local refineObj=Util.GetGameObject(_go.transform,"refine"):GetComponent("Text") if itemConfig[_itemData.id].ItemType == ItemType.EquipTreasure then icon.sprite=Util.LoadSprite(_itemData.icon) frame.sprite=Util.LoadSprite(_itemData.frame) proIcon:SetActive(true) proIcon:GetComponent("Image").sprite=Util.LoadSprite(GetProStrImageByProNum(_itemData.itemConfig.PropertyName)) name.text=itemConfig[_itemData.id].Name star:SetActive(false) Util.GetGameObject(_go.transform,"redPoint"):SetActive(false) lvObj.text=_itemData.lv if _itemData.lv>0 then lvObj.gameObject:SetActive(true) else lvObj.gameObject:SetActive(false) end refineObj.text="+".._itemData.refineLv if _itemData.refineLv>0 then refineObj.gameObject:SetActive(true) else refineObj.gameObject:SetActive(false) end Util.GetGameObject(_go.transform,"num").gameObject:SetActive(false) -- 0.查看属性 1.穿戴 2.卸下 3.交换 --宝物界面 Util.AddOnceClick(Util.GetGameObject(_go.transform,"icon"), function() if curEquipTreasureDatas[pos] then UIManager.OpenPanel(UIName.RoleEquipTreasureChangePopup,this,3,curHeroData,curEquipTreasureDatas[pos],_itemData,pos) else UIManager.OpenPanel(UIName.RoleEquipTreasureChangePopup,this,1,curHeroData,_itemData,nil,pos) end end) else frame.sprite=Util.LoadSprite(_itemData.frame) icon.sprite=Util.LoadSprite(_itemData.icon) lvObj.gameObject:SetActive(false) refineObj.gameObject:SetActive(false) proIcon:SetActive(false) name.text=_itemData.itemConfig.Name star:SetActive(true) EquipManager.SetEquipStarShow(star,_itemData.itemConfig.Id) local redPoint = Util.GetGameObject(_go.transform,"redPoint") if curHeroCanUpEquipTabs and #curHeroCanUpEquipTabs > 0 then local isShow = false for i = 1, #curHeroCanUpEquipTabs do if curHeroCanUpEquipTabs[i] ==_itemData.did then isShow = true end end if isShow then redPoint:SetActive(true) else redPoint:SetActive(false) end else redPoint:SetActive(false) end Util.GetGameObject(_go.transform,"num"):GetComponent("Text").text = _itemData.num Util.AddOnceClick(Util.GetGameObject(_go.transform,"icon"), function() if curHeroEquipDatas[_itemData.equipConfig.Position] then UIManager.OpenPanel(UIName.RoleEquipChangePopup,this,3,curHeroData,curHeroEquipDatas[_itemData.equipConfig.Position],_itemData,_itemData.equipConfig.Position) else UIManager.OpenPanel(UIName.RoleEquipChangePopup,this,1,curHeroData,_itemData,_itemData.equipConfig.Position) end end) end end --刷新当前英雄装备坑位的信息 function this.UpdateEquipPosHeroData(_equipOrTreasure,_type,_selectEquipDataList,_oldSelectEquip,position)--type --1 穿单件装备 2 卸单件装备 3 替换单件装备 4 一键穿装备 5一键脱装备 if _type==1 then effectList[position]:SetActive(false) effectList[position]:SetActive(true) if _equipOrTreasure == 1 then curSelectEquipData=_selectEquipDataList[1] --装备绑英雄 EquipManager.SetEquipUpHeroDid(curSelectEquipData.did,curHeroData.dynamicId) --英雄加装备 table.insert(curHeroData.equipIdList,curSelectEquipData.did) else curEquipTreasureDatas=_selectEquipDataList[1] --装备绑英雄 EquipTreasureManager.SetEquipTreasureUpHeroDid(curEquipTreasureDatas.idDyn,curHeroData.dynamicId) --英雄加装备 table.insert(curHeroData.jewels,curEquipTreasureDatas.idDyn) end elseif _type==2 then if _equipOrTreasure == 1 then --装备解绑英雄 curSelectEquipData = _selectEquipDataList[1] EquipManager.SetEquipUpHeroDid(curSelectEquipData.did,"0") for i = 1, #curHeroData.equipIdList do if curHeroData.equipIdList[i]==curSelectEquipData.did then --英雄删除装备 table.remove(curHeroData.equipIdList,i) break end end else curEquipTreasureDatas = _selectEquipDataList[1] EquipTreasureManager.SetEquipTreasureUpHeroDid(curEquipTreasureDatas.idDyn,"") for i = 1, #curHeroData.jewels do if curHeroData.jewels[i]==curEquipTreasureDatas.idDyn then --英雄删除装备 table.remove(curHeroData.jewels,i) break end end end elseif _type==3 then effectList[position]:SetActive(false) effectList[position]:SetActive(true) if _equipOrTreasure == 1 then curSelectEquipData=_selectEquipDataList[1] --新装备绑英雄 EquipManager.SetEquipUpHeroDid(curSelectEquipData.did,curHeroData.dynamicId)--穿 if _oldSelectEquip then --被替换装备解绑英雄 EquipManager.SetEquipUpHeroDid(_oldSelectEquip.did,"0") end --英雄替换新选择装备 if curHeroEquipDatas[curSelectEquipData.equipConfig.Position] then for i = 1, #curHeroData.equipIdList do if curHeroData.equipIdList[i]==curHeroEquipDatas[curSelectEquipData.equipConfig.Position].did then curHeroData.equipIdList[i]=curSelectEquipData.did end end end else curEquipTreasureDatas=_selectEquipDataList[1] --新装备绑英雄 EquipTreasureManager.SetEquipTreasureUpHeroDid(curEquipTreasureDatas.idDyn,curHeroData.dynamicId) if _oldSelectEquip then --被替换装备解绑英雄 EquipTreasureManager.SetEquipTreasureUpHeroDid(_oldSelectEquip.idDyn,"") end --英雄替换新选择装备 for i = 1, #curHeroData.jewels do if curHeroData.jewels[i]==_oldSelectEquip.idDyn then curHeroData.jewels[i]=curEquipTreasureDatas.idDyn end end end elseif _type==4 then --一键穿 把身上装备解绑英雄id if _equipOrTreasure==1 then for k,v in ipairs(curHeroData.equipIdList) do EquipManager.SetEquipUpHeroDid(v,"0") end curHeroData.equipIdList={} for i = 1, #_selectEquipDataList do --把选择的装备绑上英雄 EquipManager.SetEquipUpHeroDid(_selectEquipDataList[i],curHeroData.dynamicId)--穿 --再把英雄装备list 清空并添加上新选择的装备 table.insert(curHeroData.equipIdList,_selectEquipDataList[i]) end --宝物 else for k,v in ipairs(curHeroData.jewels) do EquipTreasureManager.SetTreasureUpOrDown(v,"0") end curHeroData.jewels={} for i = 1, #_selectEquipDataList do --把选择的装备绑上英雄 EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i],curHeroData.dynamicId)--穿 --再把英雄装备list 清空并添加上新选择的装备 table.insert(curHeroData.jewels,_selectEquipDataList[i]) end end elseif _type==5 then --一键脱 把身上装备英雄id置为“0” 再把英雄装备list清空 if _equipOrTreasure==1 then if _selectEquipDataList then for i = 1, #_selectEquipDataList do EquipManager.SetEquipUpHeroDid(_selectEquipDataList[i],"0") end end --for i = 1, #_selectEquipDataList do -- --把选择的装备绑上英雄 -- -- EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i],curHeroData.dynamicId)--穿 -- --再把英雄装备list 清空并添加上新选择的装备 -- table.remove(curHeroData.equipIdList,i) --end curHeroData.equipIdList={} else if _selectEquipDataList then for i = 1, #_selectEquipDataList do EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i],"") end --table.remove(curHeroData.jewels,i) curHeroData.jewels={} end --for i = 1, #_selectEquipDataList do -- --把选择的装备绑上英雄 -- EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i],curHeroData.dynamicId)--穿 -- --再把英雄装备list 清空并添加上新选择的装备 -- table.remove(curHeroData.equipIdList,_selectEquipDataList[i]) --end end --curHeroData.equipIdList={} end --刷新界面 this.ShowHeroEquip() --上阵刷新红点 if isUpZhen then this.allEquipUpRedPoint:SetActive(#HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId) > 0) end --刷新当前英雄可穿装备 if indexBtnNum == PosIdConst.All then this:OnClickAllBtn() else this:OnClickTabBtn(indexBtnNum) end --对比战力并更新战力值 播放战力变更动画 HeroManager.CompareWarPower(curHeroData.dynamicId) end --去除已穿的装备 function this:EquipListFilter(_allEquip) local allShowEquip={} for k, v in pairs(_allEquip) do if v.upHeroDid=="0" then if v.equipConfig.ProfessionLimit==0 or v.equipConfig.ProfessionLimit==curHeroData.profession then table.insert(allShowEquip,v) end end end return allShowEquip end --选择图片设置父级 function this.SelectImageSetParent(_objPoint) this.selsectSkillImage:SetActive(false) this.selsectSkillImage.transform:SetParent(_objPoint.transform) this.selsectSkillImage.transform.localScale = Vector3.one this.selsectSkillImage.transform.localPosition = Vector3.zero end --界面关闭时调用(用于子类重写) function RoleEquipPanel:OnClose() end function this:AddRedPointVale(_equipDatas) for j = 1, #_equipDatas do _equipDatas[j].isRedPointShow = 1 for i = 1, #curHeroCanUpEquipTabs do if curHeroCanUpEquipTabs[i] ==_equipDatas[j].did then _equipDatas[j].isRedPointShow = 2 end end end end function this:SortEquipDatas(_equipDatas) if teamHero[curHeroData.dynamicId] then isUpZhen = true this.allEquipUpRedPoint:SetActive(#HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId) > 0) curHeroCanUpEquipTabs = HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId) else isUpZhen = false this.allEquipUpRedPoint:SetActive(false) curHeroCanUpEquipTabs = {} end this:AddRedPointVale(_equipDatas) table.sort(_equipDatas, function(a, b) if a.isRedPointShow ==b.isRedPointShow then if a.equipConfig.Quality ==b.equipConfig.Quality then if a.equipConfig.Position ==b.equipConfig.Position then return a.id < b.id else return a.equipConfig.Position < b.equipConfig.Position end else return a.equipConfig.Quality > b.equipConfig.Quality end else return a.isRedPointShow > b.isRedPointShow end end) end --做装备叠加特殊组拼数据 function this:EquipDJDatas(_itemDatas) local equips = {} for i = 1, #_itemDatas do if equips[_itemDatas[i].id] then equips[_itemDatas[i].id].num = equips[_itemDatas[i].id].num + 1 else equips[_itemDatas[i].id] = _itemDatas[i] equips[_itemDatas[i].id].num = 1 end end local showList = {} for i, v in pairs(equips) do table.insert(showList, v) end return showList end --界面销毁时调用(用于子类重写) function RoleEquipPanel:OnDestroy() SubUIManager.Close(this.UpView) this.ScrollView = nil end return RoleEquipPanel