diff --git a/Assets/ManagedResources/~Lua/Data/UIData.lua b/Assets/ManagedResources/~Lua/Data/UIData.lua index eb78c83bbe..b5a34b97ec 100644 --- a/Assets/ManagedResources/~Lua/Data/UIData.lua +++ b/Assets/ManagedResources/~Lua/Data/UIData.lua @@ -327,6 +327,7 @@ UIName = { DynamicActivityPanel = 326,--轮转活动通用窗口 CompoundHeroPanel = 327,--神将置换、合成界面 CompoundHeroUpStarListPanel = 328,--角色合成操作弹窗 + CompoundHeroFirstUpStarListPanel = 329,--角色合成首位操作弹窗 } diff --git a/Assets/ManagedResources/~Lua/Modules/CompoundHero/CompoundHeroFirstUpStarListPanel.lua b/Assets/ManagedResources/~Lua/Modules/CompoundHero/CompoundHeroFirstUpStarListPanel.lua new file mode 100644 index 0000000000..81cfc33e7c --- /dev/null +++ b/Assets/ManagedResources/~Lua/Modules/CompoundHero/CompoundHeroFirstUpStarListPanel.lua @@ -0,0 +1,213 @@ +require("Base/BasePanel") +CompoundHeroFirstUpStarListPanel = Inherit(BasePanel) +local this = CompoundHeroFirstUpStarListPanel +local curSelectHeroList={} +local heroDataList={} +local curNeedRoleNum +local openThisPanel +local curHeroData = {} +--初始化组件(用于子类重写) +function CompoundHeroFirstUpStarListPanel: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") + + 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(927.5, 1010), 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 CompoundHeroFirstUpStarListPanel:BindEvent() + + Util.AddClick(this.BtnBack, function() + -- PlaySoundWithoutClick(SoundConfig.Sound_UICancel) + self:ClosePanel() + end) + Util.AddClick(this.BtnSure, function() + if LengthOfTable(curSelectHeroList) < 1 then + return + end + self:ClosePanel() + Log("curSelectHeroList "..LengthOfTable(curSelectHeroList)) + openThisPanel.UpdateUpStarPosHeroData2(curSelectHeroList) + end) + Util.AddClick(this.btnAutoSelect, function() + self:AutoSelectHero() + end) +end + +--添加事件监听(用于子类重写) +function CompoundHeroFirstUpStarListPanel:AddListener() + +end + +--移除事件监听(用于子类重写) +function CompoundHeroFirstUpStarListPanel:RemoveListener() + +end + +--界面打开时调用(用于子类重写) +--1 是否是第一位置本体 2 所有可选英雄 3 4 升当前星的规则 5 打开RoleUpStarListPanel的界面 6 当前以选择的英雄 7 需要升级的英雄 +function CompoundHeroFirstUpStarListPanel:OnOpen(heroData,_openThisPanel,_curHeroData) + + openThisPanel= _openThisPanel + curHeroData = _curHeroData + heroDataList = heroData + curSelectHeroList[_curHeroData.dynamicId] = _curHeroData + this.HeroSortData(heroDataList) + for i, v in pairs(heroDataList) do + 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.GetHeroFormationStr(n) + v.isFormation = isFormationStr + end + end + end + end + end + this.ScrollView:SetData(heroDataList, function (index, go) + this.OnShowSingleCardData(go, heroDataList[index]) + end) + + curNeedRoleNum=1 + local str = _curHeroData.heroConfig.ReadingName + this.desText.text=string.format(Language[11872],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 LengthOfTable(curSelectHeroList)>=curNeedRoleNum then + PopupTipPanel.ShowTip(Language[10660]) + return + else + curSelectHeroList[heroData.dynamicId] = heroData.dynamicId + end + elseif type==2 then + if curSelectHeroList[heroData.dynamicId] then + curSelectHeroList[heroData.dynamicId] = nil + end + -- 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",LengthOfTable(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(GetResourcePath(heroData.heroConfig.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)) + local formationMask = Util.GetGameObject(go.transform, "formationMask") + -- formationMask:SetActive(false) + formationMask:SetActive((heroData.isFormation ~= "" and heroData.isFormation ~= Language[11108]) 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") + 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[10660]) + 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[11776]) + return + end + end) +end +function this.HeroSortData(heroData) + Log("#heroData "..#heroData) + --Language[11108] + table.sort(heroData, function(a, b) + if (a.isFormation == "" or (a.isFormation ~= "" and a.isFormation == Language[11108])) and (b.isFormation == "" or (b.isFormation ~= "" and b.isFormation == Language[11108])) + or (a.isFormation ~= "" and a.isFormation ~= Language[11108]) and (b.isFormation ~= "" and b.isFormation ~= Language[11108]) 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[11108])) and (not b.dynamicId ~= "" and b.isFormation ~= Language[11108]) + end + end) +end +function CompoundHeroFirstUpStarListPanel:AutoSelectHero() + curSelectHeroList = {} + for i = 1, #heroDataList do + if LengthOfTable(curSelectHeroList) < curNeedRoleNum and heroDataList[i].isFormation == "" and heroDataList[i].lockState == 0 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) +end +--界面关闭时调用(用于子类重写) +function CompoundHeroFirstUpStarListPanel:OnClose() + +end + +--界面销毁时调用(用于子类重写) +function CompoundHeroFirstUpStarListPanel:OnDestroy() + + this.ScrollView = nil +end + +return CompoundHeroFirstUpStarListPanel \ No newline at end of file diff --git a/Assets/ManagedResources/~Lua/Modules/CompoundHero/CompoundHeroFirstUpStarListPanel.lua.meta b/Assets/ManagedResources/~Lua/Modules/CompoundHero/CompoundHeroFirstUpStarListPanel.lua.meta new file mode 100644 index 0000000000..4ca608d9eb --- /dev/null +++ b/Assets/ManagedResources/~Lua/Modules/CompoundHero/CompoundHeroFirstUpStarListPanel.lua.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7c91c0583532f804b91ffb8ba520897c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ManagedResources/~Lua/Modules/CompoundHero/CompoundHeroUpStarListPanel.lua b/Assets/ManagedResources/~Lua/Modules/CompoundHero/CompoundHeroUpStarListPanel.lua index 3015a86ef5..c994e1690f 100644 --- a/Assets/ManagedResources/~Lua/Modules/CompoundHero/CompoundHeroUpStarListPanel.lua +++ b/Assets/ManagedResources/~Lua/Modules/CompoundHero/CompoundHeroUpStarListPanel.lua @@ -31,7 +31,7 @@ end function CompoundHeroUpStarListPanel:BindEvent() Util.AddClick(this.BtnBack, function() - PlaySoundWithoutClick(SoundConfig.Sound_UICancel) + -- PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) Util.AddClick(this.BtnSure, function() @@ -55,6 +55,7 @@ function CompoundHeroUpStarListPanel:RemoveListener() end --界面打开时调用(用于子类重写) +--1 是否是第一位置本体 2 所有可选英雄 3 4 升当前星的规则 5 打开RoleUpStarListPanel的界面 6 当前以选择的英雄 7 需要升级的英雄 function CompoundHeroUpStarListPanel:OnOpen(heroData,HeroRankupGroupData,RankupConsumeMaterialData,_openThisPanel,_curSelectHeroList,_curHeroData) openThisPanel= _openThisPanel diff --git a/Assets/ManagedResources/~Lua/Modules/CompoundHero/view/CompoundHero_Compound.lua b/Assets/ManagedResources/~Lua/Modules/CompoundHero/view/CompoundHero_Compound.lua index 0e80cb9999..d81693e754 100644 --- a/Assets/ManagedResources/~Lua/Modules/CompoundHero/view/CompoundHero_Compound.lua +++ b/Assets/ManagedResources/~Lua/Modules/CompoundHero/view/CompoundHero_Compound.lua @@ -92,9 +92,15 @@ function this.ShowCurrPosHeroCompound() this.ScrollView:SetData(heroDatas, function (index, go) this.SingleHeroDataShow(go, heroDatas[index]) end) - end - +--显示当前阵营的英雄 +function this.ShowCurrPosHeroCompound2() + local heroDatas = this.GetAllHeroCompoundData(curIndex) + this.ScrollView:SetData(heroDatas, function (index, go) + this.SingleHeroDataShow(go, heroDatas[index]) + end) + this.SelectHeroShow(curSelectHeroConfig) +end --设置按钮选中 function this.SetBtnSelect(_parObj) this.selectBtn.transform:SetParent(_parObj.transform) @@ -200,20 +206,9 @@ function this.UpdateHeroUpStarData(_curUpStarData) -- addBtnImage:SetActive(false) -- end num:GetComponent("Text").text=string.format("%s/%s",0,curUpStarData[4]) - -- if #_curUpStarData.haveHeroList[i + 1] >= curUpStarData[4] then - -- num:GetComponent("Text").text=string.format("%s/%s",#_curUpStarData.haveHeroList[i + 1],curUpStarData[4]) - -- else - -- num:GetComponent("Text").text=string.format("%s/%s",#_curUpStarData.haveHeroList[i + 1],curUpStarData[4]) - -- end SetHeroStars(starGrid, upStarMaterialsData.StarLimit,1,nil,-15.3) - -- LogGreen("_curUpStarData.haveHeroList3[i] "..#_curUpStarData.haveHeroList3[i + 1]) Util.AddOnceClick(addBtn, function() - -- curSelectUpStarData=curUpStarData[i] - -- curSelectUpStarGo=go - -- local curShowHeroListData=self:SetShowHeroListData(upStarConsumeMaterial,upStarHeroListData.heroList) - -- --参数1 显示的herolist 2 3 升当前星的规则 4 打开RoleUpStarListPanel的界面 - -- UIManager.OpenPanel(UIName.RoleUpStarListPanel,curShowHeroListData,upStarMaterialsData,curUpStarData,this,upStarConsumeMaterial[i],curSelectHero) - + if not curSelectHero then PopupTipPanel.ShowTip("没有本体") return end curSelectUpStarData=curUpStarData curSelectUpStarGo=go local curShowHeroListData=this.SetShowHeroListData(upStarConsumeMaterial,_curUpStarData.haveHeroList3[i + 1]) @@ -232,29 +227,34 @@ function this.UpdateHeroUpStarData(_curUpStarData) end end --分析设置升星界面显示的英雄list数据 如果当前升星材料的坑位的英雄数据与 以其他坑位有重合并且选择上的英雄不显示 如果是当前坑位显示的英雄显示对勾 -function this.SetShowHeroListData(upStarConsumeMaterial,curHeroList)--1 消耗的总消耗组 2 当前坑位可选择的所有英雄 +function this.SetShowHeroListData(upStarConsumeMaterial,curHeroList,isFirstPos)--1 消耗的总消耗组 2 当前坑位可选择的所有英雄 local curEndShowHeroListData={} for i = 1, #curHeroList do if curHeroList[i].dynamicId ~= curSelectHero.dynamicId then curHeroList[i].isSelect=2 - -- LogGreen("curHeroList[i] "..curHeroList[i].dynamicId) + table.insert(curEndShowHeroListData,curHeroList[i]) + elseif isFirstPos then + curHeroList[i].isSelect=1 table.insert(curEndShowHeroListData,curHeroList[i]) end end - -- LogGreen("#curEndShowHeroListData "..#curEndShowHeroListData) - for j = 1, #upStarConsumeMaterial do - if upStarConsumeMaterial[j] and #upStarConsumeMaterial[j]>0 then - for k = 1, #upStarConsumeMaterial[j] do - if j==curSelectUpStarData[2] then--curSelectUpStarData 当前坑位选择的英雄信息 - for _, v in pairs(curEndShowHeroListData) do - if v.dynamicId==upStarConsumeMaterial[j][k] then - v.isSelect=1 + if isFirstPos then + return curEndShowHeroListData + else + for j = 1, #upStarConsumeMaterial do + if upStarConsumeMaterial[j] and #upStarConsumeMaterial[j]>0 then + for k = 1, #upStarConsumeMaterial[j] do + if j==curSelectUpStarData[2] then--curSelectUpStarData 当前坑位选择的英雄信息 + for _, v in pairs(curEndShowHeroListData) do + if v.dynamicId==upStarConsumeMaterial[j][k] then + v.isSelect=1 + end end - end - else - for i, v in pairs(curEndShowHeroListData) do - if v.dynamicId==upStarConsumeMaterial[j][k] then - curEndShowHeroListData[i] = nil + else + for i, v in pairs(curEndShowHeroListData) do + if v.dynamicId==upStarConsumeMaterial[j][k] then + curEndShowHeroListData[i] = nil + end end end end @@ -263,7 +263,6 @@ function this.SetShowHeroListData(upStarConsumeMaterial,curHeroList)--1 消耗 end local curList={} for _, v in pairs(curEndShowHeroListData) do - -- LogGreen("#curList "..v.id.." "..v.isSelect) table.insert(curList,v) end return curList @@ -284,7 +283,6 @@ function this.AutoSelectUpStarHeroList(_curUpStarData) and curSelectHero.heroConfig.Qualiy ~= 3) then if LengthOfTable(upStarHeroListData) >= _curUpStarData.upStarData[i][4] then for j = 1, LengthOfTable(upStarHeroListData) do - LogGreen(_curUpStarData.upStarData[i][4]) if #curSelectHeroList < _curUpStarData.upStarData[i][4] then if upStarHeroListData[j].lockState == 0 and upStarHeroListData[j].dynamicId ~= curSelectHero.dynamicId then--upStarHeroListData[i].isFormation == "" table.insert(curSelectHeroList,upStarHeroListData[j]) @@ -328,6 +326,29 @@ function this.UpdateUpStarPosHeroData(curSelectHeroList,_upStarData) end end end +--刷新当前升星坑位英雄的信息 +function this.UpdateUpStarPosHeroData2(curSelectHeroList) + -- LogGreen("LengthOfTable(curSelectHeroList) "..LengthOfTable(curSelectHeroList)) + + if LengthOfTable(curSelectHeroList) < 1 then + Util.GetGameObject(curSelectUpStarGo.transform,"add/add"):SetActive(true) + curSelectHero = nil + -- local upStarHeroListData=HeroManager.GetUpStarHeroListData(curSelectUpStarData.upStarMaterialsData.Id,curHeroData) + -- if upStarHeroListData.state<=0 then + -- Util.GetGameObject(curSelectUpStarGo.transform,"add/add"):SetActive(false) + -- end + Util.GetGameObject(curSelectUpStarGo.transform,"num"):GetComponent("Text").text=string.format("%s/%s", LengthOfTable(curSelectHeroList),1) + else + for key, value in pairs(curSelectHeroList) do + curSelectHero = value + end + this.GetAllHeroCompoundData2(curSelectHeroConfig.config,curSelectHeroConfig,true) + if curSelectHero then this.compoundHerolv.text=curSelectHero.lv end + Util.GetGameObject(curSelectUpStarGo.transform,"add/add"):SetActive(false) + Util.GetGameObject(curSelectUpStarGo.transform,"num"):GetComponent("Text").text=string.format("%s/%s", LengthOfTable(curSelectHeroList),1) + end + +end --更新英雄进阶数据 function this.UpdateFirstHeroUpStarData(curHeroCompoundData) local go = needHeros[1] @@ -355,6 +376,14 @@ function this.UpdateFirstHeroUpStarData(curHeroCompoundData) else num:GetComponent("Text").text=string.format("%s/%s",0,1) end + Util.AddOnceClick(addBtn, function() + if not curSelectHero then PopupTipPanel.ShowTip("没有本体") return end + curSelectUpStarData=nil + curSelectUpStarGo=go + local curShowHeroListData=this.SetShowHeroListData(upStarConsumeMaterial,curHeroCompoundData.haveHeroList3[1],true) + --参数1 显示的herolist 2 3 升当前星的规则 4 打开RoleUpStarListPanel的界面 + UIManager.OpenPanel(UIName.CompoundHeroFirstUpStarListPanel,curShowHeroListData,this,curSelectHero) + end) else needHeros[1]:SetActive(false) end @@ -452,10 +481,14 @@ function this.DeleteUpStarMaterials() HeroManager.UpdateSingleHeroSkillData(curSelectHero.dynamicId) --本地数据删除材料英雄 for i = 1, #upStarConsumeMaterial do + LogGreen("DeleteHeroDatas "..#upStarConsumeMaterial[i]) + for j = 1, #upStarConsumeMaterial[i] do + LogGreen("DeleteHeroDatas "..upStarConsumeMaterial[i][j]) + end HeroManager.DeleteHeroDatas(upStarConsumeMaterial[i]) end --刷新界面 - this.ShowCurrPosHeroCompound() + this.ShowCurrPosHeroCompound2() end -- tab节点显示自定义 function this.TabAdapter(tab, index, status) @@ -526,6 +559,9 @@ function this.GetAllHeroCompoundData(index) end end this.GetAllHeroCompoundData2(configInfo,curHeroCompoundData) + if curSelectHeroConfig and curSelectHeroConfig.config and curSelectHeroConfig.config.Id == curHeroCompoundData.config.Id then + curSelectHeroConfig = curHeroCompoundData + end table.insert(allCompoundHeroConFigData,curHeroCompoundData) end end diff --git a/data_execl/base_data/UIConfig.xlsx b/data_execl/base_data/UIConfig.xlsx index a97fbbb72a..d77e615fe2 100644 Binary files a/data_execl/base_data/UIConfig.xlsx and b/data_execl/base_data/UIConfig.xlsx differ