require("Base/BasePanel") TrainingItemListPanel = Inherit(BasePanel) local this = TrainingItemListPanel local curSelectItemOrHeroList={} local heroOrItemDataList={} local curNeedRoleNum=1 local openThisPanel local curData = {} local openType=0 local currentSelectItems={} local currentSelectItem={} local curSelectGO local sendFunc=nil local openPanel=nil --初始化组件(用于子类重写) function TrainingItemListPanel:InitComponent() this.spLoader = SpriteLoader.New() curSelectGO=nil this.BtnBack = Util.GetGameObject(self.gameObject, "btnBack") this.mask = Util.GetGameObject(self.gameObject, "mask") this.BtnSure = Util.GetGameObject(self.gameObject, "btnSure") this.BtnSure:SetActive(true) this.btnAutoSelect = Util.GetGameObject(self.gameObject, "btnAutoSelect") this.cardPre = Util.GetGameObject(self.gameObject, "item") --this.grid = Util.GetGameObject(self.gameObject, "scroll/grid") local v = Util.GetGameObject(self.gameObject, "scroll"):GetComponent("RectTransform").rect --LogGreen("v.width:".. v.width.." v.height:"..v.height) this.Scrollbar= Util.GetGameObject(self.gameObject, "Scrollbar"):GetComponent("Scrollbar") this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView,Util.GetGameObject(self.gameObject, "scroll").transform, this.cardPre, this.Scrollbar, Vector2.New(v.width, v.height), 1, 5, Vector2.New(19.32,40)) this.ScrollView.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(6.78, 27) this.ScrollView.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5) this.ScrollView.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5) this.ScrollView.moveTween.MomentumAmount = 1 this.ScrollView.moveTween.Strength = 1 this.NoneImage= Util.GetGameObject(self.gameObject, "NoneImage") this.NoneImage.gameObject:SetActive(false) end --绑定事件(用于子类重写) function TrainingItemListPanel:BindEvent() Util.AddClick(this.BtnBack, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) Util.AddClick(this.mask, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) Util.AddClick(this.BtnSure, function() if sendFunc then sendFunc(currentSelectItems,curSelectItemOrHeroList) -- openPanel:UpdateUpStarPosHeroData(cu) self:ClosePanel() end end) -- Util.AddClick(this.btnAutoSelect, function() -- self:AutoSelectHero() -- end) end --添加事件监听(用于子类重写) function TrainingItemListPanel:AddListener() end --移除事件监听(用于子类重写) function TrainingItemListPanel:RemoveListener() end --界面打开时调用(用于子类重写) function TrainingItemListPanel:OnOpen(_curData,_func,NeedNum,selectItems1,selectItems2,_openPanel) sendFunc=_func openPanel=_openPanel curSelectItemOrHeroList={} currentSelectItems={} curNeedRoleNum=NeedNum heroOrItemDataList={} for i = 1, #selectItems1 do -- curSelectHeroList[_curSelectHeroList[i]]=_curSelectHeroList[i] table.insert(currentSelectItems,selectItems1[i]) end for i = 1, #selectItems2 do -- curSelectHeroList[_curSelectHeroList[i]]=_curSelectHeroList[i] table.insert(curSelectItemOrHeroList,selectItems2[i]) end -- print(#_curSelectHeroList) -- for i = 1, #_curSelectHeroList do -- -- curSelectHeroList[_curSelectHeroList[i]]=_curSelectHeroList[i] -- table.insert(curSelectHeroList,_curSelectHeroList[i]) -- end curData = _curData -- heroDataList = heroData if _curData.type==1 then local itemDatas = BagManager.GetBagItemDataByItemTypeV3(_curData.data[2],_curData.data[1],_curData.data[3]) local index =0 for i=1,#itemDatas do local haveNum = BagManager.GetItemCountById(itemDatas[i].id) if haveNum > 0 then for j = 1+index, haveNum +index do local v = {} v.id = itemDatas[i].id v.itemData= itemDatas[i] v.index = j--用于祭品选择界面 查看是否选中 table.insert(heroOrItemDataList,v) end end index=haveNum -- heroOrItemDataList[i]=itemDatas[i] end elseif _curData.type==3 then local pokemonList = PokemonManager.GetPokemonDatas() local index=0 for i=1,#pokemonList do local v={} v.dynamicId=pokemonList[i].dynamicId v.pokemonData=pokemonList[i] v.type=3 v.index = i--用于祭品选择界面 查看是否选中 v.star=v.star v.lv=v.lv local config=pokemonList[i].config v.ischip=0 v.icon= GetResourcePath(config.Icon) v.id=v.id v.quality=config.Quality v.name=config.Name v.returnCoin=config.CoinReturn v.frame=GetHeroQuantityImageByquality(config.Quality) v.num=1 table.insert(heroOrItemDataList,v) -- heroOrItemDataList[i]=itemDatas[i] end elseif _curData.type == 4 then local pokemonList = GodWeaponManager.GetNoUpZhenWeapons() local index=0 for i=1,#pokemonList do local v={} v.dynamicId=pokemonList[i].dynamicId v.pokemonData=pokemonList[i] v.type=4 v.index = i--用于祭品选择界面 查看是否选中 v.star=pokemonList[i].star v.lv=pokemonList[i].lv local config=pokemonList[i].config v.ischip=0 v.icon= GetResourcePath(config.Icon) --LogError("v.id========================================="..v.id) v.id=pokemonList[i].id v.quality=config.Quality v.name=config.Name v.returnCoin=config.CoinReturn v.frame=GetHeroQuantityImageByquality(config.Quality) v.num=1 table.insert(heroOrItemDataList,v) end else local titemDatas={} if _curData.NeedHeroOther ~=0 then local itemId = _curData.NeedHeroOther local haveNum = BagManager.GetItemCountById(itemId) if haveNum > 0 then for i = 1, haveNum do local v = {} v.id = itemId v.type = 2--1道具 2 英雄 需要传给后端 v.index = i--用于祭品选择界面 查看是否选中 table.insert(titemDatas,v) end end end if #titemDatas>0 then local HeroDatas=HeroManager.GetAllNumStarData(curData.heroGroupData[1]) for i=1 ,#titemDatas do heroOrItemDataList[i]=titemDatas[i] end local index=#titemDatas for i=1+index,#HeroDatas+index do heroOrItemDataList[i]=HeroDatas[i-index] heroOrItemDataList[i].type=1 end else local HeroDatas=HeroManager.GetAllNumStarData(curData.heroGroupData[1]) for i=1,#HeroDatas do heroOrItemDataList[i]=HeroDatas[i] heroOrItemDataList[i].type=1 end end end this.ScrollView:SetData(heroOrItemDataList, function (index, go) this.OnShowSingleCardData(go, heroOrItemDataList[index]) end,false,false) end function this.OnClickEnterHero(go,heroData,type) -- this.OnShowSingleCardData(go,heroData,type) end function this.OnShowSingleCardData(go,heroData)--isSelect 1选择 2 没选择 local choosed = Util.GetGameObject(go.transform, "choosed") choosed:SetActive(false) local frame = Util.GetGameObject(go.transform, "frame"):GetComponent("Image") local lvGo = Util.GetGameObject(go.transform, "lv"):GetComponent("Text") local icon = Util.GetGameObject(go.transform, "icon"):GetComponent("Image") local name = Util.GetGameObject(go.transform, "name"):GetComponent("Text") local formationMask = Util.GetGameObject(go.transform, "formationMask") -- local formationImage = Util.GetGameObject(formationMask.transform, "formationImage") -- local lockImage = Util.GetGameObject(formationMask.transform, "lockImage") -- local noumenon = Util.GetGameObject(go, "noumenon") -- local starGrid = Util.GetGameObject(go.transform, "star") local cardBtn = Util.GetGameObject(go.transform, "icon") if curData.type==2 then -- icon.sprite = this.spLoader:LoadSprite(heroData.icon) local choosed = Util.GetGameObject(go.transform, "choosed") choosed:SetActive(false) -- if curSelectHeroList[heroData.dynamicId] then -- curSelectHeroList[heroData.dynamicId]=heroData -- choosed:SetActive(true) -- end for i = 1, #curSelectItemOrHeroList do if curSelectItemOrHeroList[i].type == RoleUpStarMatType.hero then if curSelectItemOrHeroList[i].dynamicId == heroData.dynamicId then choosed:SetActive(true) end elseif curSelectItemOrHeroList[i].type == RoleUpStarMatType.item then if curSelectItemOrHeroList[i].id == heroData.id and curSelectItemOrHeroList[i].index == heroData.index then choosed:SetActive(true) end end end Util.GetGameObject(go.transform, "posIcon"):SetActive(false) local frame = Util.GetGameObject(go.transform, "frame"):GetComponent("Image") local lvGo = Util.GetGameObject(go.transform, "lv") local icon = Util.GetGameObject(go.transform, "icon"):GetComponent("Image") local proIcon = Util.GetGameObject(go.transform, "proIcon") local name = Util.GetGameObject(go.transform, "name"):GetComponent("Text") local formationMask = Util.GetGameObject(go.transform, "formationMask") local formationImage = Util.GetGameObject(formationMask.transform, "formationImage") local lockImage = Util.GetGameObject(formationMask.transform, "lockImage") local noumenon = Util.GetGameObject(go, "noumenon") local starGrid = Util.GetGameObject(go.transform, "star") local cardBtn = Util.GetGameObject(go.transform, "icon") local GongMingMask = Util.GetGameObject(go.transform, "GongMingMask") if heroData.type == RoleUpStarMatType.hero then frame.sprite = this.spLoader:LoadSprite(GetHeroQuantityImageByquality(heroData.heroConfig.Quality,heroData.star)) lvGo:SetActive(true) lvGo:GetComponent("Text").text = heroData.lv icon.sprite = this.spLoader:LoadSprite(heroData.icon) proIcon:GetComponent("Image").sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(heroData.changeProId)) formationMask:SetActive((heroData.isFormation ~=nil and heroData.isFormation ~= "" and heroData.isFormation ~= Language[10410]) or heroData.lockState == 1) formationImage:SetActive(heroData.isFormation ~=nil and heroData.isFormation ~= "" ) lockImage:SetActive( heroData.lockState == 1) --noumenon:SetActive( heroData.id == curHeroData.id ) name.text = SubString2(GetLanguageStrById(heroData.heroConfig.ReadingName),8) local star,starType = heroData.GetStar(1) SetHeroStars(this.spLoader, starGrid, star,starType,nil,nil,Vector2.New(0,1)) LogError("hero star=="..star) -- local effect=SetHeroFlyEffect(go,this.spLoader,heroData.star,this.sortingOrder+1,1) -- if effect then -- local particles=effect:GetComponentsInChildren(typeof(UnityEngine.ParticleSystem)) -- for key, value in pairs(particles:ToTable()) do -- local mat=value:GetComponent(typeof(UnityEngine.Renderer)) -- if mat.material.shader.name=="YXZ/Effect/Mix Masking(Without Moving)_alphablend" then -- mat.material.shader=poolManager:LoadAsset("YXZ_MixMaskingWithoutMoving_alphablend_1",poolManager.AssetType.Other) -- end -- end -- end Util.SetParticleSortLayer(starGrid,this.sortingOrder + 1) GongMingMask:SetActive(false)--最后检测是否共鸣 if heroData.lockState == 1 or (heroData.isFormation ~= "" and heroData.isFormation ~= Language[10410]) then else if HarmonyManager.IsChangeColor(heroData.dynamicId) then Util.GetGameObject(go.transform, "lv/Text"):GetComponent("Text").text = ""..heroData.lv.."" GongMingMask:SetActive(true) elseif HarmonyManager:IsEnvoy(heroData.dynamicId) and HarmonyManager.GetSingleAdditionsData(HarmonyAddType.AddLv) then if HarmonyManager.GetSingleAdditionsData(HarmonyAddType.AddLv).heroTid == 0 then -- body Util.GetGameObject(go.transform, "lv/Text"):GetComponent("Text").text = ""..heroData.lv.."" GongMingMask:SetActive(true) end end end Util.AddOnceClick(GongMingMask, function() PopupTipPanel.ShowTip(Language[12184]) end) Util.AddOnceClick(cardBtn, function() local isSelect = false local selectIndex = 0 for i = 1, #curSelectItemOrHeroList do if curSelectItemOrHeroList[i].type == RoleUpStarMatType.hero then if curSelectItemOrHeroList[i].dynamicId == heroData.dynamicId then isSelect = true selectIndex = i end end end if isSelect then choosed:SetActive(false) -- curSelectHeroList[heroData.dynamicId]=nil table.remove(curSelectItemOrHeroList,selectIndex) -- this.numText.text=string.format("%s/%s",LengthOfTable(curSelectItemOrHeroList),curNeedRoleNum) return end if LengthOfTable(curSelectItemOrHeroList)>=curNeedRoleNum then PopupTipPanel.ShowTip(Language[10403]) return end -- curSelectHeroList[heroData.dynamicId]=heroData table.insert(curSelectItemOrHeroList,heroData) choosed:SetActive(true) -- this.numText.text=string.format("%s/%s",LengthOfTable(currentSelectItems),curNeedRoleNum) end) Util.AddOnceClick(formationMask, function() if heroData.isFormation ~= "" then PopupTipPanel.ShowTip( heroData.isFormation) return end if heroData.lockState == 1 then PopupTipPanel.ShowTip(Language[10413]) return end end) Util.AddLongPressClick(cardBtn, function() UIManager.OpenPanel(UIName.RoleInfoPopup,heroData) end, 0.5) elseif heroData.type == RoleUpStarMatType.item then LogError("22222222222") local itemConfig = ConfigManager.TryGetConfigData(ConfigName.ItemConfig,heroData.id) if not itemConfig then return end frame.sprite = this.spLoader:LoadSprite(GetHeroQuantityImageByquality(itemConfig.Quantity,itemConfig.HeroStar[1])) lvGo:SetActive(false) icon.sprite = this.spLoader:LoadSprite(GetResourcePath(itemConfig.ResourceID)) if itemConfig.PropertyName and itemConfig.PropertyName > 0 then proIcon:SetActive(true) proIcon:GetComponent("Image").sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(itemConfig.PropertyName)) else proIcon:SetActive(false) end formationMask:SetActive(false) formationImage:SetActive(false) lockImage:SetActive(false) noumenon:SetActive(false) GongMingMask:SetActive(false) name.text = SubString2(GetLanguageStrById(itemConfig.Name),8) SetHeroStars(this.spLoader,starGrid, itemConfig.HeroStar[1] or 6,1,nil,nil,Vector2.New(0,1)) local effect=SetHeroFlyEffect(go,this.spLoader,itemConfig.HeroStar[1] or 6,this.sortingOrder+1,1) if effect then local particles=effect:GetComponentsInChildren(typeof(UnityEngine.ParticleSystem)) for key, value in pairs(particles:ToTable()) do local mat=value:GetComponent(typeof(UnityEngine.Renderer)) if mat.material.shader.name=="YXZ/Effect/Mix Masking(Without Moving)_alphablend" then mat.material.shader=poolManager:LoadAsset("YXZ_MixMaskingWithoutMoving_alphablend_1",poolManager.AssetType.Other) end end end Util.SetParticleSortLayer(starGrid,this.sortingOrder + 1) Util.AddOnceClick(cardBtn, function() local isSelect = false local selectIndex = 0 for i = 1, #curSelectItemOrHeroList do if curSelectItemOrHeroList[i].type == RoleUpStarMatType.item then if curSelectItemOrHeroList[i].id == heroData.id and curSelectItemOrHeroList[i].index == heroData.index then isSelect = true selectIndex = i choosed:SetActive(true) end end end if isSelect then choosed:SetActive(false) -- curSelectHeroList[heroData.dynamicId]=nil table.remove(curSelectItemOrHeroList,selectIndex) -- this.numText.text=string.format("%s/%s",LengthOfTable(curSelectItemOrHeroList),curNeedRoleNum) return end if LengthOfTable(curSelectItemOrHeroList)>=curNeedRoleNum then PopupTipPanel.ShowTip(Language[10403]) return end -- curSelectHeroList[heroData.dynamicId]=heroData table.insert(curSelectItemOrHeroList,heroData) choosed:SetActive(true) -- this.numText.text=string.format("%s/%s",LengthOfTable(curSelectItemOrHeroList),curNeedRoleNum) end) Util.AddLongPressClick(cardBtn, function() UIManager.OpenPanel(UIName.RewardItemSingleShowPopup, heroData.id) end, 0.5) end elseif curData.type==3 or curData.type==4 then local choosed = Util.GetGameObject(go.transform, "choosed") choosed:SetActive(false) -- if curSelectHeroList[heroData.dynamicId] then -- curSelectHeroList[heroData.dynamicId]=heroData -- choosed:SetActive(true) -- end for i = 1, #currentSelectItems do if currentSelectItems[i].dynamicId == heroData.dynamicId then choosed:SetActive(true) end end Util.GetGameObject(go.transform, "posIcon"):SetActive(false) local frame = Util.GetGameObject(go.transform, "frame"):GetComponent("Image") local lvGo = Util.GetGameObject(go.transform, "lv") local icon = Util.GetGameObject(go.transform, "icon"):GetComponent("Image") local proIcon = Util.GetGameObject(go.transform, "proIcon") local name = Util.GetGameObject(go.transform, "name"):GetComponent("Text") local formationMask = Util.GetGameObject(go.transform, "formationMask") local formationImage = Util.GetGameObject(formationMask.transform, "formationImage") local lockImage = Util.GetGameObject(formationMask.transform, "lockImage") local noumenon = Util.GetGameObject(go, "noumenon") local starGrid = Util.GetGameObject(go.transform, "star") starGrid.transform.position=Vector3.New(-60,-60,0) local cardBtn = Util.GetGameObject(go.transform, "icon") local GongMingMask = Util.GetGameObject(go.transform, "GongMingMask") frame.sprite = this.spLoader:LoadSprite(GetHeroQuantityImageByquality(heroData.pokemonData.config.Quality,heroData.star)) lvGo:SetActive(true) lvGo:GetComponent("Text").text = heroData.lv icon.sprite = this.spLoader:LoadSprite(heroData.icon) proIcon:GetComponent("Image").sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(heroData.changeProId)) formationMask:SetActive((heroData.isFormation ~=nil and heroData.isFormation ~= "" and heroData.isFormation ~= Language[10410]) or heroData.lockState == 1) formationImage:SetActive(heroData.isFormation ~=nil and heroData.isFormation ~= "" ) lockImage:SetActive( heroData.lockState == 1) --noumenon:SetActive( heroData.id == curHeroData.id ) name.text = SubString2(GetLanguageStrById(heroData.name),8) local star = heroData.pokemonData.star local starSize=Vector2.New(32.5,32.5) if star>5 then star=star+5 starSize = Vector2.New(1,-13) end SetHeroStars(this.spLoader, starGrid, star,1,starSize,-15) Util.SetParticleSortLayer(starGrid,this.sortingOrder + 1) GongMingMask:SetActive(false)--最后检测是否共鸣 Util.AddOnceClick(cardBtn, function() local isSelect = false local selectIndex = 0 for i = 1, #currentSelectItems do if currentSelectItems[i].dynamicId == heroData.dynamicId then isSelect = true selectIndex = i end end if isSelect then choosed:SetActive(false) -- curSelectHeroList[heroData.dynamicId]=nil table.remove(currentSelectItems,selectIndex) -- this.numText.text=string.format("%s/%s",LengthOfTable(curSelectItemOrHeroList),curNeedRoleNum) return end if LengthOfTable(currentSelectItems)>=curNeedRoleNum then PopupTipPanel.ShowTip(Language[10403]) return end -- curSelectHeroList[heroData.dynamicId]=heroData table.insert(currentSelectItems,heroData) choosed:SetActive(true) -- this.numText.text=string.format("%s/%s",LengthOfTable(currentSelectItems),curNeedRoleNum) end) Util.AddOnceClick(formationMask, function() if heroData.isFormation ~= "" then PopupTipPanel.ShowTip( heroData.isFormation) return end if heroData.lockState == 1 then PopupTipPanel.ShowTip(Language[10413]) return end end) Util.AddLongPressClick(cardBtn, function() --UIManager.OpenPanel(UIName.RoleInfoPopup,heroData) end, 0.5) else for i = 1, #currentSelectItems do if currentSelectItems[i].itemData.id == heroData.itemData.id and currentSelectItems[i].index == heroData.index then choosed:SetActive(true) end end icon.sprite = this.spLoader:LoadSprite(heroData.itemData.icon) local proIcon = Util.GetGameObject(go.transform, "proIcon") proIcon:SetActive(false) lvGo.gameObject:SetActive(true) lvGo.text=heroData.index name.text = heroData.itemData.name frame.sprite = this.spLoader:LoadSprite(heroData.itemData.frame) local isSelect = CheckListIsContainValue1(curSelectItemOrHeroList,heroData.itemData.did) Util.AddOnceClick(cardBtn, function() local isSelect = false local selectIndex = 0 for i = 1, #currentSelectItems do if currentSelectItems[i].index == heroData.index then isSelect = true selectIndex = i end end if isSelect then choosed:SetActive(false) -- curSelectHeroList[heroData.dynamicId]=nil table.remove(currentSelectItems,selectIndex) -- this.numText.text=string.format("%s/%s",LengthOfTable(currentSelectItems),curNeedRoleNum) return end if LengthOfTable(currentSelectItems)>=curNeedRoleNum then PopupTipPanel.ShowTip(Language[10403]) return end -- curSelectHeroList[heroData.dynamicId]=heroData table.insert(currentSelectItems,heroData) choosed:SetActive(true) -- this.numText.text=string.format("%s/%s",LengthOfTable(currentSelectItems),curNeedRoleNum) end) end end --界面关闭时调用(用于子类重写) function TrainingItemListPanel:OnClose() end --界面销毁时调用(用于子类重写) function TrainingItemListPanel:OnDestroy() this.spLoader:Destroy() sendFunc=nil heroOrItemDataList={} currentSelectItem=nil this.ScrollView = nil end return TrainingItemListPanel