require("Base/BasePanel") local spcialConfig = ConfigManager.GetConfig(ConfigName.SpecialConfig) local equipConfig = ConfigManager.GetConfig(ConfigName.EquipConfig) RoleEquipPanel = Inherit(BasePanel) local isGonming = 0 --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 = 1 local typeTab = { [0] = Language[10175], [1] = Language[10391], [2] = Language[10392], [3] = Language[10393], [4] = Language[10394], [5] = Language[10552], [6] = Language[10553]} local tabs = {} local redTabs = {} 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 local isPlayAnim = true local isFristOpenTime --初始化组件(用于子类重写)RoleEquipChangePopup function RoleEquipPanel:InitComponent() this.spLoader = SpriteLoader.New() 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") Util.GetGameObject(self.transform, "bg/heroInfo/pos"):SetActive(false) --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 = 1, 6 do tabs[i] = Util.GetGameObject(self.transform, "Tabs/Btn" .. i) Util.GetGameObject(tabs[i], "Text"):GetComponent("Text").fontSize = GetCurLanguage() == 0 and 48 or 40 redTabs[i] = Util.GetGameObject(tabs[i], "red") 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.equipPreList2 = {} this.equipPreList = {} 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.ShaiXuanBtnLv:GetComponent("Image").sprite = this.spLoader:LoadSprite("r_tongyong_dengjiqiehuan_zh") this.ShaiXuanBtnQu = Util.GetGameObject(self.gameObject, "ShaiXuanBtn/Qu") this.ShaiXuanBtnQu:GetComponent("Image").sprite = this.spLoader:LoadSprite("r_tongyong_pingjieqiehuan_zh") 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.width, v2.height), 1, 5, Vector2.New(40, 15) ) this.ScrollView.moveTween.MomentumAmount = 1 this.ScrollView.moveTween.Strength = 1 Util.GetGameObject(self.transform, "powerBtn"):GetComponent("Image").sprite = this.spLoader:LoadSprite("t_tongyong-zhanli_zh") 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.equipTreasureBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("b_baowuxitong_gongmin_zh") 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) this.mask = Util.GetGameObject(self.gameObject, "mask") this.equipBtn5 = Util.GetGameObject(self.gameObject,"bg/equipInfo/equip5/Image") this.equipBtn6 = Util.GetGameObject(self.gameObject,"bg/equipInfo/equip6/Image") this.equipBTn5Add = Util.GetGameObject(self.gameObject,"bg/equipInfo/equip5/red") this.equipBtn6Add = Util.GetGameObject(self.gameObject,"bg/equipInfo/equip6/red") for i = 1, 6 do Util.GetGameObject(self.gameObject,"bg/equipInfo/equip"..i.."/mask"):GetComponent("Image").sprite = this.spLoader:LoadSprite(EquipPositionIcon[i]) end this.treeBtn = Util.GetGameObject(self.gameObject, "treeBtn") Util.GetGameObject(this.treeBtn,"treebtn"):GetComponent("Image").sprite = this.spLoader:LoadSprite("j_jianmushenshu_anniu_01_zh") Util.AddClick(this.treeBtn, function() if ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.SACREDTREE) then UIManager.OpenPanel(UIName.SacredTreePanel) end end) end --绑定事件(用于子类重写) function RoleEquipPanel:BindEvent() Util.AddClick( this.btnBack, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) if openThisPanel.RefreshHeroDatas then openThisPanel:RefreshHeroDatas(curHeroData, HeroManager.heroSortedDatas) end self:ClosePanel() end ) Util.AddClick( this.leftBtn, function() isPlayAnim = true this:LeftBtnOnClick() end ) Util.AddClick( this.rightBtn, function() isPlayAnim = true this:RightBtnOnClick() end ) Util.AddOnceClick( this.allEquipUp, function() this:AllEquipUpBtnOnClick() end ) Util.AddOnceClick( this.allEquipDown, function() if HarmonyManager:IsShowGongMingEqiup(curHeroData.dynamicId) and curHeroData.harmonyGongMing then -- body PopupTipPanel.ShowTip(Language[12222]) else this:AllEquipDownBtnOnClick() end end ) for i = 1, 6 do Util.AddClick( tabs[i], function() isPlayAnim = true if i == indexBtnNum then return end indexBtnNum = i this:OnClickTabBtn(indexBtnNum) -- if indexBtnNum == PosIdConst.All then -- this:OnClickAllBtn() -- else -- this:OnClickTabBtn(indexBtnNum) -- end end ) end Util.AddClick( this.equipTreasureBtn, function() if LengthOfTable(curEquipTreasureDatas) < 2 then PopupTipPanel.ShowTip(Language[11797]) return end UIManager.OpenPanel(UIName.EquipTreasureResonancePanel, curHeroData) end ) -- Util.AddClick( -- this.equipBtn5, -- function() -- UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,9999,nil) -- end -- ) -- Util.AddClick( -- this.equipBtn6, -- function() -- UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,9998,nil) -- 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() this:OnClickTabBtn(indexBtnNum) -- if indexBtnNum == PosIdConst.All then -- this:OnClickAllBtn() -- else -- this:OnClickTabBtn(indexBtnNum) -- end this.CheckRedTab() 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() this.treeBtn:SetActive(ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.SACREDTREE)) isPlayAnim = true 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.WuQi teamHero = FormationManager.GetAllMainFormationHeroId() this.ShowHeroEquip(true) this:OnClickTabBtn(indexBtnNum) this.CheckRedTab() this.UpView:OnOpen({showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main}) end function this:OnSortingOrderChange() Util.AddParticleSortLayer(this.effect, this.sortingOrder - orginLayer) Util.SetParticleSortLayer(this.heroStarGrid,this.sortingOrder + 1) orginLayer = this.sortingOrder end --右切换按钮点击 function this:RightBtnOnClick() index = (index + 1 <= #heroListData and index + 1 or 1) curHeroData = heroListData[index] this.ShowHeroEquip() this:OnClickTabBtn(indexBtnNum) this.CheckRedTab() -- 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() this:OnClickTabBtn(indexBtnNum) this.CheckRedTab() -- if indexBtnNum == PosIdConst.All then -- this:OnClickAllBtn() -- else -- this:OnClickTabBtn(indexBtnNum) -- end end --一键装备 function this:AllEquipUpBtnOnClick() local allEquipIds = {} local allTreasureIds = {} --计算英雄身上的所有装备位的装备 local curHeroEquipDatas = {} local curHeroDataequipIdList = curHeroData.equipIdList for k, v in ipairs(curHeroDataequipIdList) do local equipData = EquipManager.GetSingleHeroSingleEquipData(v, curHeroData.dynamicId) if equipData ~= nil then curHeroEquipDatas[equipData.equipConfig.Position] = equipData else LogBlue("没有得到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 (index == 5 or index == 6) and isCanUpEquipTreasure then curPosEquip = EquipTreasureManager.GetAllTreasuresByLocation(index - 4, curHeroData.heroConfig.PropertyName) else --获取到所有未装备的装备 curPosEquip = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession, index) end -- LogBlue("i:"..index.." #curPosEquip:".. #curPosEquip) -- LogBlue("计算每个位置可装备的装备战力")-- 取战力最大的装备 if curPosEquip and #curPosEquip > 0 then local equiData = {} local indexMaxPower = 0 if curHeroEquipDatas[index] then equiData = curHeroEquipDatas[index] --获取到宝物战力 if index == 5 or index == 6 then indexMaxPower = EquipTreasureManager.CalculateWarForce(curHeroEquipDatas[index].idDyn) --LogBlue("宝物id:"..curHeroEquipDatas[index].idDyn.." id:"..curHeroEquipDatas[index].id.." indexMaxPower:"..indexMaxPower) else --获取到装备战力 indexMaxPower = EquipManager.CalculateWarForce(curHeroEquipDatas[index].id) --LogBlue("装备id:"..curHeroEquipDatas[index].id.." indexMaxPower:"..indexMaxPower) end end --LogGreen("循环计算每个装备的战力") for i = 1, #curPosEquip do local addPower = 0 local curEquip = curPosEquip[i] if curEquip then if index == 5 or index == 6 then addPower = EquipTreasureManager.CalculateWarForce(curEquip.idDyn) --LogGreen("宝物id:"..curEquip.idDyn.." id:"..curEquip.id.." addPower:"..addPower) else addPower = EquipManager.CalculateWarForce(curEquip.id) --LogGreen("装备id:"..curEquip.id.." addPower:"..addPower) end end if addPower > indexMaxPower then indexMaxPower = addPower equiData = curEquip end end if (index == 5 or index == 6) then if ((curHeroEquipDatas[index] and equiData.idDyn ~= curHeroEquipDatas[index].idDyn) or (not curHeroEquipDatas[index])) then table.insert(allTreasureIds, equiData.idDyn) end else if (not curHeroEquipDatas[index] or tonumber(equiData.id) ~= tonumber(curHeroEquipDatas[index].id)) then table.insert(allEquipIds, tostring(equiData.id)) end 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.id ~= curHeroEquipDatas[equiData.position].id then table.insert(equipEffectPos, i) end end else --table.insert(showEffectPos,i) end end end LogYellow("装备:"..#allEquipIds) LogYellow("宝物:"..#allTreasureIds) LogYellow("isCanUpEquipTreasure:"..tostring(isCanUpEquipTreasure)) if (allEquipIds and #allEquipIds > 0) or (isCanUpEquipTreasure and allTreasureIds and #allTreasureIds > 0) then --isCanUpEquipTreasure if allEquipIds and #allEquipIds > 0 and not curHeroData.harmonyGongMing then -- for i = 1, #allEquipIds do -- --LogGreen("一键装备"..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 ) end if curHeroData.harmonyGongMing then PopupTipPanel.ShowTip(Language[12223]) end --穿戴宝物 if isCanUpEquipTreasure and allTreasureIds and #allTreasureIds > 0 then --穿装备协议 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 ) end else if not allEquipIds or #allEquipIds < 1 then if #curHeroData.equipIdList <= 0 then PopupTipPanel.ShowTip(Language[11798]) else PopupTipPanel.ShowTip(Language[12137]) end else PopupTipPanel.ShowTip(Language[11799]) end end PlaySoundWithoutClick(SoundConfig.Sound_Wear) this.ShowHeroEquip() end --一键卸下 function this:AllEquipDownBtnOnClick() if (curHeroData.equipIdList and #curHeroData.equipIdList > 0) or (curHeroData.jewels and #curHeroData.jewels > 0 and isCanUpEquipTreasure) then if curHeroData.equipIdList and #curHeroData.equipIdList > 0 then NetManager.EquipUnLoadOptRequest( curHeroData.dynamicId, curHeroData.equipIdList, 1, function() this.UpdateEquipPosHeroData(1, 5, curHeroData.equipIdList) end ) end --寶物 if curHeroData.jewels and #curHeroData.jewels > 0 then -- 一键卸下音效 NetManager.EquipUnLoadOptRequest( curHeroData.dynamicId, curHeroData.jewels, 2, function() this.UpdateEquipPosHeroData(2, 5, curHeroData.jewels) end ) end else PopupTipPanel.ShowTip(Language[11800]) end PlaySoundWithoutClick(SoundConfig.Sound_TakeOff) this.ShowHeroEquip() this.CheckRedTab() 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], "#") --LogBlue("tonumber(lvs[2]):" ..lvs[2].."PlayerManager.level:"..PlayerManager.level) 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 SetHeroBg(this.spLoader, Util.GetGameObject(this.transform, "bg/heroInfo"),Util.GetGameObject(this.transform, "bg/heroInfo/bg"), curHeroData.star) this.heroLv.text = curHeroData.lv this.heroIcon.sprite = this.spLoader:LoadSprite(curHeroData.painting) this.heroProIcon.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(curHeroData.heroConfig.PropertyName)) local star,starType = curHeroData.GetStar(1) local starScale = -10 if starType == 3 then starScale = -13.2 end SetHeroStars(this.spLoader, this.heroStarGrid, star,starType,nil,starScale) Util.SetParticleSortLayer(this.heroStarGrid,this.sortingOrder + 1) --装备的数据 curHeroEquipDatas = {} for i = 1, #curHeroData.equipIdList do local equipData = EquipManager.GetSingleHeroSingleEquipData(curHeroData.equipIdList[i], curHeroData.dynamicId) if equipData ~= nil then curHeroEquipDatas[equipData.equipConfig.Position] = equipData end end --宝器的数据 curEquipTreasureDatas = {} 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 for k,v in pairs(this.equipPreList2) do v.gameObject:SetActive(false) end for i = 1, this.equipGrid.transform.childCount do local go = this.equipGrid.transform:GetChild(i - 1).gameObject this:SingleDataShow(go,i) end local allAddProVal --计算面板属性 local WarPower = 0 if isUpZhen then WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId, FormationTypeDef.FORMATION_NORMAL) else WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId) end this.force.text = WarPower end function this:SingleDataShow(go,index) local effect = Util.GetGameObject(go.transform, "effect") screenAdapte(effect) Util.AddParticleSortLayer(effect, this.sortingOrder - orginLayer1[index]) orginLayer1[index] = this.sortingOrder effectList[index] = effect local pos = Util.GetGameObject(go.transform, "pos") if not this.equipPreList2[go] then this.equipPreList2[go] = SubUIManager.Open(SubUIConfig.ItemView,pos.transform) this.equipPreList2[go].gameObject:SetActive(false) end local mask = Util.GetGameObject(go.transform, "mask") if curHeroEquipDatas[index] then this.equipPreList2[go].gameObject:SetActive(true) mask.gameObject:SetActive(false) this.equipPreList2[go]:OnOpen(false,{curHeroEquipDatas[index].id,0}, 1, false, false, false, 0) if HarmonyManager:IsShowGongMingEqiup(curHeroData.dynamicId) and curHeroData.harmonyGongMing then -- body Util.GetGameObject(go.transform, "HongMenging"):SetActive(true) else Util.GetGameObject(go.transform, "HongMenging"):SetActive(false) end elseif curEquipTreasureDatas[index] then this.equipPreList2[go].gameObject:SetActive(true) mask.gameObject:SetActive(false) this.equipPreList2[go]:OnOpen(false,{curEquipTreasureDatas[index].id,0}, 1, false, false, false, 0,curEquipTreasureDatas[index].idDyn) --鸿蒙阵 共享数据判断 if HarmonyManager.IsInfo(curEquipTreasureDatas[index].upHeroDid) and curEquipTreasureDatas[index].equipType == 1 then --if HarmonyManager.IsInfo(curEquipTreasureDatas[index].upHeroDid) and HarmonyManager.GetSingleAdditions(HarmonyAddType.HunSoulPrint) ~= -1 and curEquipTreasureDatas[index].equipType == 1 then Util.GetGameObject(go.transform, "HongMenging"):SetActive(true) elseif HarmonyManager.IsInfo(curEquipTreasureDatas[index].upHeroDid) and curEquipTreasureDatas[index].equipType == 2 then --elseif HarmonyManager.IsInfo(curEquipTreasureDatas[index].upHeroDid) and HarmonyManager.GetSingleAdditions(HarmonyAddType.LingSoulPrint) ~= -1 and curEquipTreasureDatas[index].equipType == 2 then Util.GetGameObject(go.transform, "HongMenging"):SetActive(true) else Util.GetGameObject(go.transform, "HongMenging"):SetActive(false) end else this.equipPreList2[go].gameObject:SetActive(false) mask.gameObject:SetActive(true) end local iconBtn = Util.GetGameObject(go.transform, "btn") Util.AddOnceClick( iconBtn, function() if curHeroEquipDatas[index] then curSelectEquipData = curHeroEquipDatas[index] UIManager.OpenPanel(UIName.RoleEquipChangePopup, this, 2, curHeroData, curHeroEquipDatas[index]) elseif curEquipTreasureDatas[index] then if itemConfig[curEquipTreasureDatas[index].id].ItemType == ItemType.EquipTreasure then local pos = 0 local jewerConfig = ConfigManager.TryGetConfigData(ConfigName.JewelConfig, curEquipTreasureDatas[index].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[index],nil,pos) end end end end ) end function this:SetSelectBtn() this.selectBtn:SetActive(true) this.selectBtn.transform:SetParent(tabs[indexBtnNum].transform) this.selectBtn:GetComponent("RectTransform").anchoredPosition3D = Vector3(-12.28, 1.08, 0) this.selectBtn.transform:SetSiblingIndex(1) --this.selectBtn.transform.localScale = Vector3.one --this.selectBtn:GetComponent("Image"):SetNativeSize() Util.GetGameObject(this.selectBtn.transform, "Text"):GetComponent("Text").text = GetCurLanguage() == 0 and typeTab[indexBtnNum] or ""..typeTab[indexBtnNum]..""--typeTab[indexBtnNum] end function this:OpenTips(nextEquipData,pos) local content = Language[12224] MsgPanel.ShowTwo(content,function () end,function () local equipIdList={} local equipDataList={} table.insert(equipIdList,tostring(nextEquipData.id)) table.insert(equipDataList,nextEquipData) NetManager.EquipWearRequest(curHeroData.dynamicId,equipIdList,1,function () this.UpdateEquipPosHeroData(1,3,equipDataList,nextEquipData,pos) end) end,Language[10731],Language[11934]) end -- --点击全部按钮 -- function this:OnClickAllBtn() -- this:SetSelectBtn() -- local itemData = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession) -- this:SortEquipDatas(itemData) -- local count = 0 -- for i=1,#itemData do -- count = count + 1--itemData[i].num -- end -- --加上宝器数据 -- local curAllEquipTreasure = EquipTreasureManager.GetAllTreasures(curHeroData.heroConfig.PropertyName) -- --宝器排序 -- for i = 1, #curAllEquipTreasure do -- table.insert(itemData, curAllEquipTreasure[i]) -- end -- --"装备数量:" -- this.itemNumText.text = Language[12181] .. count + LengthOfTable(curAllEquipTreasure) -- this:SetItemData(itemData) -- end --点击装备按钮 function this:OnClickTabBtn(_index) this:SetSelectBtn() if _index < 5 then local allEquip = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession, _index) this:SortEquipDatas(allEquip) local count = 0 for i=1,#allEquip do count = count + 1--allEquip[i].num end --"装备数量:" this.itemNumText.text = Language[12181] .. count this:SetItemData(allEquip) else local allEquipTreasure allEquipTreasure = EquipTreasureManager.GetAllTreasuresByLocation(_index - 4, curHeroData.heroConfig.PropertyName) this:SortEquipDatas1(allEquipTreasure) --"装备数量:" this.itemNumText.text = Language[12181] .. LengthOfTable(allEquipTreasure) this:SetItemData(allEquipTreasure) end this.CheckRedTab() end --设置背包列表数据 local curHeroCanUpEquipTabs = {} local curHeroCanUpEquipTreasuresTabs = {} function this:SetItemData(_itemDatas) if LengthOfTable(_itemDatas) == 0 then this.emptyObj.gameObject:SetActive(true) else this.emptyObj.gameObject:SetActive(false) end for k,v in pairs(this.equipPreList) do v.gameObject:SetActive(false) end this.ScrollView:SetData( _itemDatas, function(index, go) this.SingleItemDataShow(go, _itemDatas[index]) end ) if isPlayAnim then if isFristOpenTime then isFristOpenTime:Stop() isFristOpenTime = nil end isFristOpenTime = Timer.New(function() this.mask:SetActive(false) end, 0.3):Start() this.mask:SetActive(true) SecTorPlayAnimByScroll(this.ScrollView) isPlayAnim = false end end function this.SingleItemDataShow(_go, _itemData) if not itemConfig[_itemData.id] then return end if not this.equipPreList[_go] then this.equipPreList[_go] = SubUIManager.Open(SubUIConfig.ItemView,_go.transform) end local redPoint = Util.GetGameObject(_go.transform, "redPoint") this.equipPreList[_go].gameObject:SetActive(true) this.equipPreList[_go].transform:SetAsFirstSibling() if itemConfig[_itemData.id].ItemType == ItemType.EquipTreasure then this.equipPreList[_go]:OnOpen(false,{_itemData.id,0}, 1.1, true, false, false, 0,_itemData.idDyn) if curHeroCanUpEquipTreasuresTabs and #curHeroCanUpEquipTreasuresTabs > 0 then local isShow = false for i = 1, #curHeroCanUpEquipTreasuresTabs do if curHeroCanUpEquipTreasuresTabs[i] == _itemData.idDyn then isShow = true end end if isShow then redPoint:SetActive(true) else redPoint:SetActive(false) end else redPoint:SetActive(false) end -- 0.查看属性 1.穿戴 2.卸下 3.交换 --宝物界面 Util.AddOnceClick(Util.GetGameObject(_go.transform, "mask"),function() if curEquipTreasureDatas[jewerConfigs[_itemData.id].Location + 4] then UIManager.OpenPanel(UIName.RoleEquipTreasureChangePopup,this,3,curHeroData,curEquipTreasureDatas[jewerConfigs[_itemData.id].Location + 4],_itemData,jewerConfigs[_itemData.id].Location + 4) else UIManager.OpenPanel(UIName.RoleEquipTreasureChangePopup, this, 1, curHeroData, _itemData, nil, jewerConfigs[_itemData.id].Location + 4) end end ) else this.equipPreList[_go]:OnOpen(false,{_itemData.id,_itemData.num}, 1, true, false, false, 0) if curHeroCanUpEquipTabs and #curHeroCanUpEquipTabs > 0 then local isShow = false for i = 1, #curHeroCanUpEquipTabs do if curHeroCanUpEquipTabs[i] == _itemData.id then isShow = true end end if isShow then redPoint:SetActive(true) else redPoint:SetActive(false) end else redPoint:SetActive(false) end Util.AddOnceClick(Util.GetGameObject(_go.transform, "mask"),function() if curHeroEquipDatas[equipConfig[_itemData.id].Position] then local nextEquipData = EquipManager.GetSingleEquipData(_itemData.id) if curHeroData.harmonyGongMing then this:OpenTips(nextEquipData,equipConfig[_itemData.id].Position) else UIManager.OpenPanel(UIName.RoleEquipChangePopup,this,3,curHeroData,curHeroEquipDatas[equipConfig[_itemData.id].Position],nextEquipData,equipConfig[_itemData.id].Position) end else UIManager.OpenPanel(UIName.RoleEquipChangePopup,this,1,curHeroData,_itemData,equipConfig[_itemData.id].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.id, curHeroData.dynamicId) --英雄加装备 table.insert(curHeroData.equipIdList, curSelectEquipData.id) HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, curHeroData.equipIdList) 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 if not curHeroData.harmonyGongMing then --装备解绑英雄 curSelectEquipData = _selectEquipDataList[1] EquipManager.DeleteSingleEquip(curSelectEquipData.id, curHeroData.dynamicId) for i = 1, #curHeroData.equipIdList do if tonumber(curHeroData.equipIdList[i]) == tonumber(curSelectEquipData.id) then --英雄删除装备 table.remove(curHeroData.equipIdList, i) break end end local a = curHeroData.equipIdList if not curHeroData.harmonyGongMing then HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, curHeroData.equipIdList) else HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, {}) 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 local a = curHeroData.equipIdList if not curHeroData.harmonyGongMing then curSelectEquipData = _selectEquipDataList[1] EquipManager.SetEquipUpHeroDid(curSelectEquipData.id, curHeroData.dynamicId) --穿 if _oldSelectEquip and tonumber(_oldSelectEquip.id) ~= tonumber(curSelectEquipData.id) then EquipManager.DeleteSingleEquip(_oldSelectEquip.id, curHeroData.dynamicId) end --英雄替换新选择装备 if curHeroEquipDatas[curSelectEquipData.equipConfig.Position] then for i = 1, #curHeroData.equipIdList do if tonumber(curHeroData.equipIdList[i]) == tonumber(curHeroEquipDatas[curSelectEquipData.equipConfig.Position].id) then curHeroData.equipIdList[i] = curSelectEquipData.id break end end end HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, curHeroData.equipIdList) else curSelectEquipData = _selectEquipDataList[1] HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, {curSelectEquipData.id}) EquipManager.SetEquipUpHeroDid(curSelectEquipData.id, curHeroData.dynamicId) 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 if not curHeroData.harmonyGongMing then local isadd for n, m in ipairs(_selectEquipDataList) do isadd = true for i = 1, #curHeroData.equipIdList do if equipConfig[tonumber(curHeroData.equipIdList[i])].Position == equipConfig[tonumber(m)].Position then EquipManager.DeleteSingleEquip(curHeroData.equipIdList[i], curHeroData.dynamicId) curHeroData.equipIdList[i] = m HeroManager.GetHeroEquipIdList1(curHeroData.dynamicId, m) isadd = false break end end if isadd then table.insert(curHeroData.equipIdList, m) end end EquipManager.UpdateEquipData(_selectEquipDataList, curHeroData.dynamicId) else local curEquilist = {} for n, m in ipairs(_selectEquipDataList) do table.insert(curEquilist, m) end curHeroData.equipIdList = curEquilist HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, curHeroData.equipIdList) EquipManager.UpdateEquipData(_selectEquipDataList, curHeroData.dynamicId) end else local isadd for i = 1, #_selectEquipDataList do isadd = true for j = 1, #curHeroData.jewels do --如果英雄身上有和选中的宝物的位置相同的,就替换 if EquipTreasureManager.GetSingleTreasureByIdDyn(curHeroData.jewels[j]).equipType == EquipTreasureManager.GetSingleTreasureByIdDyn(_selectEquipDataList[i]).equipType then EquipTreasureManager.SetTreasureUpOrDown(curHeroData.jewels[j], "0") EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i], curHeroData.dynamicId) curHeroData.jewels[j] = _selectEquipDataList[i] isadd = false break end end if isadd then EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i], curHeroData.dynamicId) table.insert(curHeroData.jewels, _selectEquipDataList[i]) end end end elseif _type == 5 then --一键脱 把身上装备英雄id置为“0” 再把英雄装备list清空 if _equipOrTreasure == 1 then if _selectEquipDataList then for i = 1, #_selectEquipDataList do EquipManager.DeleteSingleEquip(_selectEquipDataList[i], curHeroData.dynamicId) end end curHeroData.equipIdList = {} HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, {}) curHeroData.equipIdList = {} else if _selectEquipDataList then for i = 1, #_selectEquipDataList do EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i], "") end curHeroData.jewels = {} end end end --刷新界面 this.ShowHeroEquip() --上阵刷新红点 this.allEquipUpRedPoint:SetActive(isUpZhen and --((#HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId) > 0 and not (HarmonyManager.IsInfo(curHeroData.dynamicId) and HarmonyManager.GetSingleAdditions(HarmonyAddType.AddEquip) ~= -1)) or ((#HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId) > 0 and not (HarmonyManager.IsInfo(curHeroData.dynamicId))) or (isCanUpEquipTreasure and #HeroManager.GetHeroIsUpTreasure(curHeroData.dynamicId,0) > 0) )) this:OnClickTabBtn(indexBtnNum) -- --刷新当前英雄可穿装备 -- if indexBtnNum == PosIdConst.All then -- this:OnClickAllBtn() -- else -- this:OnClickTabBtn(indexBtnNum) -- end --对比战力并更新战力值 播放战力变更动画 HeroManager.CompareWarPower(curHeroData.dynamicId) this.CheckRedTab() end function this.CheckRedTab() for i = 1,#redTabs do if i < 5 then local allEquip = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession, i) this:SortEquipDatas(allEquip) local showRed = false if curHeroCanUpEquipTabs and #curHeroCanUpEquipTabs > 0 then for j = 1,#curHeroCanUpEquipTabs do if equipConfig[curHeroCanUpEquipTabs[j]].Position == i then showRed = true break end end else showRed = false end redTabs[i].gameObject:SetActive(showRed) else local canEquips = HeroManager.GetHeroIsUpTreasure(curHeroData.dynamicId,(i-4)) redTabs[i].gameObject:SetActive(isCanUpEquipTreasure and isUpZhen and #canEquips > 0) end end this.equipBTn5Add.gameObject:SetActive(curEquipTreasureDatas[5] and curEquipTreasureDatas[5].idDyn and HeroManager.CheckIsUpTreasure(curEquipTreasureDatas[5].idDyn,0) ) this.equipBtn6Add.gameObject:SetActive(curEquipTreasureDatas[6] and curEquipTreasureDatas[6].idDyn and HeroManager.CheckIsUpTreasure(curEquipTreasureDatas[6].idDyn,0) ) 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() if isFristOpenTime then isFristOpenTime:Stop() isFristOpenTime = nil end end function this:AddRedPointVale(_equipDatas) for j = 1, #_equipDatas do _equipDatas[j].isRedPointShow = 1 for i = 1, #curHeroCanUpEquipTabs do if curHeroCanUpEquipTabs[i] == _equipDatas[j].id then _equipDatas[j].isRedPointShow = 2 end end end end function this:SortEquipDatas1(_equipDatas) if teamHero[curHeroData.dynamicId] then curHeroCanUpEquipTreasuresTabs = HeroManager.GetHeroIsUpTreasure(curHeroData.dynamicId,0) else curHeroCanUpEquipTreasuresTabs = {} end for j = 1, #_equipDatas do _equipDatas[j].isRedPointShow = 1 for i = 1, #curHeroCanUpEquipTreasuresTabs do if curHeroCanUpEquipTreasuresTabs[i] == _equipDatas[j].idDyn then _equipDatas[j].isRedPointShow = 2 end end end table.sort(_equipDatas,function(a, b) if a.isRedPointShow == b.isRedPointShow then 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 else return a.isRedPointShow > b.isRedPointShow end end ) end function this:SortEquipDatas(_equipDatas) if teamHero[curHeroData.dynamicId] then isUpZhen = true --上阵刷新红点 this.allEquipUpRedPoint:SetActive(isUpZhen and ((#HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId) > 0 and not (HarmonyManager.IsInfo(curHeroData.dynamicId) and HarmonyManager.GetSingleAdditions(HarmonyAddType.AddEquip) ~= -1)) or (isCanUpEquipTreasure and #HeroManager.GetHeroIsUpTreasure(curHeroData.dynamicId,0) > 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.itemConfig.Quantity == b.itemConfig.Quantity then if equipConfig[a.id].Position == equipConfig[b.id].Position then return a.id > b.id else return equipConfig[a.id].Position < equipConfig[b.id].Position end else return a.itemConfig.Quantity > b.itemConfig.Quantity end else return a.isRedPointShow > b.isRedPointShow end end ) end --界面销毁时调用(用于子类重写) function RoleEquipPanel:OnDestroy() this.spLoader:Destroy() SubUIManager.Close(this.UpView) this.ScrollView = nil for k,v in pairs(this.equipPreList) do SubUIManager.Close(v) end this.equipPreList = {} for k,v in pairs(this.equipPreList2) do SubUIManager.Close(v) end this.equipPreList2 = {} end return RoleEquipPanel