神将合成代码

dev_chengFeng
zhangqiang 2020-08-08 18:18:26 +08:00
parent 17b6db91e2
commit 32c788b8ac
6 changed files with 291 additions and 33 deletions

View File

@ -327,6 +327,7 @@ UIName = {
DynamicActivityPanel = 326,--轮转活动通用窗口
CompoundHeroPanel = 327,--神将置换、合成界面
CompoundHeroUpStarListPanel = 328,--角色合成操作弹窗
CompoundHeroFirstUpStarListPanel = 329,--角色合成首位操作弹窗
}

View File

@ -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

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7c91c0583532f804b91ffb8ba520897c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -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("<color=#FF0000FF>%s/%s</color>",0,curUpStarData[4])
-- if #_curUpStarData.haveHeroList[i + 1] >= curUpStarData[4] then
-- num:GetComponent("Text").text=string.format("<color=#FFFFFF>%s/%s</color>",#_curUpStarData.haveHeroList[i + 1],curUpStarData[4])
-- else
-- num:GetComponent("Text").text=string.format("<color=#FF0000FF>%s/%s</color>",#_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("<color=#FF0000FF>%s/%s</color>", 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("<color=#FFFFFFFF>%s/%s</color>", 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("<color=#FF0000FF>%s/%s</color>",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

Binary file not shown.