require("Base/BasePanel") RoleUpStarListPanel = Inherit(BasePanel) local this = RoleUpStarListPanel local curSelectHeroList={} local heroDataList={} local curNeedRoleNum local openThisPanel local curHeroData = {} --初始化组件(用于子类重写) function RoleUpStarListPanel:InitComponent() this.BtnBack = Util.GetGameObject(self.transform, "btnBack") this.BtnSure = Util.GetGameObject(self.transform, "btnSure") this.btnAutoSelect = Util.GetGameObject(self.transform, "btnAutoSelect") this.cardPre = Util.GetGameObject(self.gameObject, "item") --this.grid = Util.GetGameObject(self.gameObject, "scroll/grid") this.desText = Util.GetGameObject(self.gameObject, "desText"):GetComponent("Text") this.numText = Util.GetGameObject(self.gameObject, "numText"):GetComponent("Text") 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,15)) 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 end --绑定事件(用于子类重写) function RoleUpStarListPanel:BindEvent() Util.AddClick(this.BtnBack, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) Util.AddClick(this.BtnSure, function() self:ClosePanel() Log("curSelectHeroList "..LengthOfTable(curSelectHeroList)) for i, v in pairs(curSelectHeroList) do LogPink("v.dynamicId "..v.dynamicId) end openThisPanel:UpdateUpStarPosHeroData(curSelectHeroList) end) Util.AddClick(this.btnAutoSelect, function() self:AutoSelectHero() end) end --添加事件监听(用于子类重写) function RoleUpStarListPanel:AddListener() end --移除事件监听(用于子类重写) function RoleUpStarListPanel:RemoveListener() end --界面打开时调用(用于子类重写) function RoleUpStarListPanel:OnOpen(heroData,HeroRankupGroupData,RankupConsumeMaterialData,_openThisPanel,_curSelectHeroList,_curHeroData) openThisPanel= _openThisPanel curSelectHeroList={} print(#_curSelectHeroList) for i = 1, #_curSelectHeroList do curSelectHeroList[_curSelectHeroList[i]]=_curSelectHeroList[i] end curHeroData = _curHeroData heroDataList = heroData this.HeroSortData(heroDataList) local text = "" for i, v in pairs(heroDataList) do text = "" for n,w in pairs(FormationManager.formationList) do if HeroManager.heroResolveLicence[n] then for m = 1, #w.teamHeroInfos do if v.dynamicId==w.teamHeroInfos[m].heroId then local isFormationStr = HeroManager.GetHeroFormationStr2(n) if isFormationStr ~= "" then if not text or text == "" then text = isFormationStr else text = text .. "、"..isFormationStr end end end end end end if not text or text == "" then v.isFormation = "" else v.isFormation = Language[10411]..text..Language[10412] end end this.ScrollView:SetData(heroDataList, function (index, go) this.OnShowSingleCardData(go, heroDataList[index]) end,false,false) curNeedRoleNum=RankupConsumeMaterialData[4] local str = "" if HeroRankupGroupData.Issame == 1 then str = HeroRankupGroupData.StarLimit..Language[10406] else if HeroRankupGroupData.IsId ~= 0 then str = HeroRankupGroupData.StarLimit..Language[10407]..GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.HeroConfig,HeroRankupGroupData.IsId).ReadingName) else if HeroRankupGroupData.IsSameClan == 0 then str = HeroRankupGroupData.StarLimit..Language[10408] else str = HeroRankupGroupData.StarLimit..Language[10409] end end end this.desText.text=string.format(Language[10402],curNeedRoleNum,str)--HeroRankupGroupData.Name) this.numText.text=string.format("%s/%s",LengthOfTable(curSelectHeroList),curNeedRoleNum) end function this.OnClickEnterHero(go,heroData,type) if type==1 then if #curSelectHeroList>=curNeedRoleNum then PopupTipPanel.ShowTip(Language[10403]) return else table.insert(curSelectHeroList,heroData) end elseif type==2 then for i = 1, #curSelectHeroList do if heroData.dynamicId==curSelectHeroList[i].dynamicId then table.remove(curSelectHeroList,i) break end end end this.OnShowSingleCardData(go,heroData,type) this.numText.text=string.format("%s/%s",#curSelectHeroList,curNeedRoleNum) end function this.OnShowSingleCardData(go,heroData)--isSelect 1选择 2 没选择 local choosed = Util.GetGameObject(go.transform, "choosed") choosed:SetActive(false) if curSelectHeroList[heroData.dynamicId] then curSelectHeroList[heroData.dynamicId]=heroData choosed:SetActive(true) end Util.GetGameObject(go.transform, "frame"):GetComponent("Image").sprite = Util.LoadSprite(GetHeroQuantityImageByquality(heroData.heroConfig.Quality,heroData.star)) Util.GetGameObject(go.transform, "lv/Text"):GetComponent("Text").text = heroData.lv Util.GetGameObject(go.transform, "icon"):GetComponent("Image").sprite = Util.LoadSprite(heroData.icon) Util.GetGameObject(go.transform, "posIcon"):SetActive(false)--:GetComponent("Image").sprite = Util.LoadSprite(heroData.professionIcon) Util.GetGameObject(go.transform, "proIcon"):GetComponent("Image").sprite = Util.LoadSprite(GetProStrImageByProNum(heroData.heroConfig.PropertyName)) --Util.GetGameObject(go.transform, "heroStage"):GetComponent("Image").sprite = Util.LoadSprite(HeroStageSprite[heroData.heroConfig.HeroStage]) local formationMask = Util.GetGameObject(go.transform, "formationMask") --LogError("heroData.isFormation "..heroData.isFormation) formationMask:SetActive((heroData.isFormation ~= "" and heroData.isFormation ~= Language[10410]) or heroData.lockState == 1) Util.GetGameObject(formationMask.transform, "formationImage"):SetActive(heroData.isFormation ~= "" ) Util.GetGameObject(formationMask.transform, "lockImage"):SetActive( heroData.lockState == 1) Util.GetGameObject(go.transform, "noumenon"):SetActive( heroData.id == curHeroData.id ) local starGrid = Util.GetGameObject(go.transform, "star") SetHeroStars(starGrid, heroData.star,1,nil,nil,Vector2.New(0,1)) local cardBtn = Util.GetGameObject(go.transform, "icon") local GongMingMask = Util.GetGameObject(go.transform, "GongMingMask") 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() if curSelectHeroList[heroData.dynamicId] then choosed:SetActive(false) curSelectHeroList[heroData.dynamicId]=nil this.numText.text=string.format("%s/%s",LengthOfTable(curSelectHeroList),curNeedRoleNum) return end if LengthOfTable(curSelectHeroList)>=curNeedRoleNum then PopupTipPanel.ShowTip(Language[10403]) return end curSelectHeroList[heroData.dynamicId]=heroData choosed:SetActive(true) this.numText.text=string.format("%s/%s",LengthOfTable(curSelectHeroList),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) end function this.HeroSortData(heroData) Log("#heroData "..#heroData) --"该神将在大闹天宫阵容中已上阵" table.sort(heroData, function(a, b) if (a.isFormation == "" or (a.isFormation ~= "" and a.isFormation == Language[10410])) and (b.isFormation == "" or (b.isFormation ~= "" and b.isFormation == Language[10410])) or (a.isFormation ~= "" and a.isFormation ~= Language[10410]) and (b.isFormation ~= "" and b.isFormation ~= Language[10410]) then if a.lockState == b.lockState then if a.heroConfig.Star == b.heroConfig.Star then if a.lv == b.lv then if a.id ~= curHeroData.id and b.id ~= curHeroData.id or a.id == curHeroData.id and b.id == curHeroData.id then return a.id > b.id else return not a.id ~= curHeroData.id and b.id == curHeroData.id end else return a.lv < b.lv end else return a.heroConfig.Star < b.heroConfig.Star end else return a.lockState < b.lockState end else return (a.isFormation == "" or (a.isFormation ~= "" and a.isFormation == Language[10410])) and (not b.dynamicId ~= "" and b.isFormation ~= Language[10410]) end end) end function RoleUpStarListPanel:AutoSelectHero() curSelectHeroList = {} for i = 1, #heroDataList do if LengthOfTable(curSelectHeroList) < curNeedRoleNum and heroDataList[i].isFormation == "" and heroDataList[i].lockState == 0 and (not HarmonyManager.IsChangeColor(heroDataList[i].dynamicId) and(not HarmonyManager:IsEnvoy(heroDataList[i].dynamicId))) then curSelectHeroList[heroDataList[i].dynamicId]=heroDataList[i] end end this.numText.text=string.format("%s/%s",LengthOfTable(curSelectHeroList),curNeedRoleNum) this.ScrollView:SetData(heroDataList, function (index, go) this.OnShowSingleCardData(go, heroDataList[index]) end,true,true) end --界面关闭时调用(用于子类重写) function RoleUpStarListPanel:OnClose() end --界面销毁时调用(用于子类重写) function RoleUpStarListPanel:OnDestroy() this.ScrollView = nil end return RoleUpStarListPanel