400 lines
17 KiB
Lua
400 lines
17 KiB
Lua
require("Base/BasePanel")
|
||
local FaLingStrongPopup = Inherit(BasePanel)
|
||
local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig)
|
||
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
|
||
local passiveSkillConfig = ConfigManager.GetConfig(ConfigName.PassiveSkillConfig)
|
||
local heroConfig=ConfigManager.GetConfig(ConfigName.HeroConfig)
|
||
local EquipStrengthen = ConfigManager.GetConfig(ConfigName.EquipStrengthen)
|
||
local EquipRankUp = ConfigManager.GetConfig(ConfigName.EquipRankUp)
|
||
local suitConFig = ConfigManager.GetConfig(ConfigName.EquipSuiteConfig)
|
||
local maxLv=tonumber(ConfigManager.GetConfigData(ConfigName.SpecialConfig,156).Value)
|
||
local _BaseProList = {}--基础属性对象
|
||
local _superProList = {}--白金属性对象
|
||
local _costProList = {} --护佑对象
|
||
local equipConfigData
|
||
local lv=0
|
||
local talismana
|
||
local selectMat={}
|
||
local isEnough = true
|
||
local typeToUpdate = {
|
||
[2] = 2,--已穿戴->卸载单件
|
||
[3] = 1,--未穿戴->穿单件
|
||
[4] = 3,--未穿戴->替换单件
|
||
}
|
||
--初始化组件(用于子类重写)
|
||
function FaLingStrongPopup:InitComponent()
|
||
self.spLoader = SpriteLoader.New()
|
||
self.mask = Util.GetGameObject(self.transform, "mask")
|
||
self.content = Util.GetGameObject(self.transform, "Content")
|
||
self.btn_close=Util.GetGameObject(self.transform, "Content/btn_close")
|
||
--装备详情--topBar
|
||
self.topBar = Util.GetGameObject(self.transform, "Content/topBar")
|
||
self.UI_effect_WuCai_Kuang = Util.GetGameObject(self.topBar, "UI_effect_WuCai_Kuang")
|
||
self.c_ui_qinyan_duan = Util.GetGameObject(self.topBar, "c_ui_qinyan_duan")
|
||
self.icon = Util.GetGameObject(self.topBar, "icon"):GetComponent("Image")
|
||
self.frame = Util.GetGameObject(self.topBar, "frame"):GetComponent("Image")
|
||
self.equipName=Util.GetGameObject(self.topBar, "name"):GetComponent("Text")
|
||
self.star=Util.GetGameObject(self.topBar, "star")
|
||
self.effectbaijin = Util.GetGameObject(self.topBar, "fx_zhuangbeijiemian")
|
||
self.hLv = Util.GetGameObject(self.topBar, "hLv"):GetComponent("Text")--家园摘星阁强化
|
||
self.hProLv = Util.GetGameObject(self.topBar, "hProLv"):GetComponent("Text")--家园摘星阁突破
|
||
--装备属性--midBar
|
||
--basePro
|
||
self.midBar = Util.GetGameObject(self.transform, "Content/midBar")
|
||
self.baseProGrid = Util.GetGameObject(self.topBar, "grid")
|
||
self.baseProPre = Util.GetGameObject(self.topBar, "grid/curProName")
|
||
self.baseProPre:SetActive(false)
|
||
|
||
self.btnJumpHome = Util.GetGameObject(self.homePro, "btnJump")
|
||
|
||
--superPro
|
||
self.superPro = Util.GetGameObject(self.midBar, "superPro")
|
||
self.superTitle = Util.GetGameObject(self.midBar, "superPro/Image/name"):GetComponent("Text")
|
||
self.superTitle.text="生命卡天赋"
|
||
self.superProGrid = Util.GetGameObject(self.superPro, "proGrid")
|
||
self.superProPre = Util.GetGameObject(self.superPro, "proGrid/Desc")
|
||
self.superProPre:SetActive(false)
|
||
|
||
|
||
--costpro
|
||
self.costPro = Util.GetGameObject(self.transform, "costPro")
|
||
self.costTitle = Util.GetGameObject(self.transform, "costPro/Image/name"):GetComponent("Text")
|
||
self.costTitle.text="强化要求"
|
||
self.costProGrid = Util.GetGameObject(self.costPro, "proGrid")
|
||
self.costProPre = Util.GetGameObject(self.costPro, "proGrid/item")
|
||
self.costProPre:SetActive(false)
|
||
self.coinImg = Util.GetGameObject(self.costPro, "coinImg"):GetComponent("Image")
|
||
self.coinTxt = Util.GetGameObject(self.costPro, "needCoin"):GetComponent("Text")
|
||
--分解按钮--btmBar
|
||
self.btnStrong=Util.GetGameObject(self.costPro, "btnStrong")
|
||
|
||
self.itemViewList={}
|
||
end
|
||
|
||
--绑定事件(用于子类重写)
|
||
function FaLingStrongPopup:BindEvent()
|
||
Util.AddClick(self.mask, function()
|
||
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(self.btn_close, function()
|
||
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(self.btnStrong, function()
|
||
if isEnough==false then
|
||
PopupTipPanel.ShowTip("强化材料不足")
|
||
return
|
||
end
|
||
NetManager.BaublesStrengthenRequest(self.equipData.did,1,selectMat,function()
|
||
selectMat={}
|
||
self:OnShow()
|
||
end)
|
||
end)
|
||
|
||
|
||
end
|
||
|
||
--添加事件监听(用于子类重写)
|
||
function FaLingStrongPopup:AddListener()
|
||
|
||
end
|
||
|
||
--移除事件监听(用于子类重写)
|
||
function FaLingStrongPopup:RemoveListener()
|
||
|
||
end
|
||
|
||
function FaLingStrongPopup:OnSortingOrderChange()
|
||
Util.SetParticleSortLayer(self.effectbaijin,self.sortingOrder + 1)
|
||
SetParticleSortLayer(self.c_ui_qinyan_duan,self.sortingOrder + 1)
|
||
SetParticleSortLayer(self.UI_effect_WuCai_Kuang,self.sortingOrder + 1)
|
||
end
|
||
local openPanel=nil
|
||
--界面打开时调用(用于子类重写)
|
||
function FaLingStrongPopup:OnOpen(_equipData,_openPanel)
|
||
if not _equipData then
|
||
return
|
||
end --父界面
|
||
openPanel=_openPanel
|
||
self.equipData = _equipData --当前装备数据
|
||
--0不显示按钮、1背包、2已穿戴(显示卸下)、3未穿戴(显示穿戴)、4未穿戴(显示替换)、5自己或其他人穿戴(非装备界面但需要显示套装属性)
|
||
--self.func = _func
|
||
end
|
||
|
||
function FaLingStrongPopup:ChangeSelectMat(_list)
|
||
selectMat=_list
|
||
end
|
||
|
||
|
||
function FaLingStrongPopup:OnShow()
|
||
--上部装备基础信息
|
||
self.equipData=FaLingManager.GetEquipDataByDid(self.equipData.did)
|
||
lv=self.equipData.lv
|
||
if lv>0 then
|
||
self.hLv.gameObject:SetActive(true)
|
||
else
|
||
self.hLv.gameObject:SetActive(false)
|
||
end
|
||
self.hLv.text=lv
|
||
Log("装备id:"..tostring(self.equipData.staticId).." openType:"..tostring(self.openType))
|
||
equipConfigData=ConfigManager.GetConfigData(ConfigName.ItemConfig, self.equipData.staticId)
|
||
local itemConfigData=ConfigManager.GetConfigData(ConfigName.ItemConfig,self.equipData.staticId)
|
||
local aaa=equipConfigData.Quantity
|
||
if equipConfigData.Quantity==8 then
|
||
aaa=7
|
||
end
|
||
--self.topBar:GetComponent("Image").sprite = self.spLoader:LoadSprite("t_tongyong_di_"..aaa)
|
||
|
||
self.c_ui_qinyan_duan:SetActive(equipConfigData.Quantity==8)
|
||
self.UI_effect_WuCai_Kuang:SetActive(equipConfigData.Quantity==7)
|
||
self.frame.sprite = self.spLoader:LoadSprite(GetQuantityImageByquality(equipConfigData.Quantity))
|
||
self.icon.sprite = self.spLoader:LoadSprite(GetResourcePath(itemConfigData.ResourceID))
|
||
self.equipName.text = itemConfigData.Name
|
||
EquipManager.SetEquipStarShow(self.spLoader, self.star,equipConfigData.staticId)
|
||
--下部按钮信息
|
||
self.effectbaijin:SetActive(false)
|
||
--Util.SetParticleSortLayer(self.effectbaijin,self.sortingOrder + 1)
|
||
--basePro基础属性
|
||
LogError("lv========================"..lv)
|
||
talismana=ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.EquipTalismana,"TalismanaId",self.equipData.staticId,"Level",lv)
|
||
|
||
local star=talismana.Star
|
||
|
||
if star>0 then
|
||
self.star:SetActive(true)
|
||
local starType=1
|
||
local starSize=nil
|
||
starType=3
|
||
star=star+10
|
||
starSize = Vector2.New(1,-13)
|
||
--starScale = 0
|
||
SetHeroStars(self.spLoader,self.star, star,starType,starSize,starScale)
|
||
Util.SetParticleSortLayer(self.star, self.sortingOrder + 3)
|
||
else
|
||
self.star:SetActive(false)
|
||
end
|
||
local nextLvData=ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.EquipTalismana,"TalismanaId",self.equipData.staticId,"Level",lv+1)
|
||
if lv>=maxLv then
|
||
nextLvData=nil
|
||
end
|
||
self.btnStrong:SetActive(nextLvData~=nil)
|
||
for _, pro in ipairs(_BaseProList) do
|
||
pro:SetActive(false)
|
||
end
|
||
local num = 0
|
||
for i=1,#talismana.Property do
|
||
local prop=talismana.Property[i]
|
||
if tonumber(prop[1])~=nil then
|
||
local proConfigData = ConfigManager.GetConfigData(ConfigName.PropertyConfig, prop[1])
|
||
if proConfigData then
|
||
num = num + 1
|
||
--基础属性
|
||
if not _BaseProList[num] then
|
||
_BaseProList[num] = newObjToParent(self.baseProPre, self.baseProGrid)
|
||
end
|
||
_BaseProList[num]:SetActive(true)
|
||
|
||
local vText = Util.GetGameObject(_BaseProList[num], "curProVale"):GetComponent("Text")
|
||
vText.gameObject:SetActive(false)
|
||
local nText = Util.GetGameObject(_BaseProList[num], "nextProVale"):GetComponent("Text")
|
||
local addImg = Util.GetGameObject(_BaseProList[num], "Image")
|
||
-- Util.GetGameObject(vText.gameObject, "homeValue"):GetComponent("Text").text = ""--摘星阁加持文字显示位置
|
||
local str=nil
|
||
if prop[2] > 0 then
|
||
str = "+"..GetPropertyFormatStr(proConfigData.Style, prop[2])
|
||
else
|
||
str = GetPropertyFormatStr(proConfigData.Style, prop[2])
|
||
end
|
||
_BaseProList[num]:GetComponent("Text").text = GetLanguageStrById(proConfigData.Info)..":"..str
|
||
if nextLvData~=nil then
|
||
nText.gameObject:SetActive(true)
|
||
addImg:SetActive(true)
|
||
nText.text = GetPropertyFormatStr(proConfigData.Style,nextLvData.Property[i][2])
|
||
else
|
||
nText.gameObject:SetActive(false)
|
||
addImg:SetActive(false)
|
||
end
|
||
end
|
||
end
|
||
|
||
end
|
||
|
||
local lvList=ConfigManager.TryGetAllConfigsDataByKey(ConfigName.EquipTalismana,"TalismanaId",self.equipData.staticId)
|
||
|
||
local skillList={}
|
||
for i=1,#lvList do
|
||
if lvList[i].ShowSkill and #lvList[i].ShowSkill>0 and tonumber(lvList[i].ShowSkill[1])~=nil then
|
||
LogError("lvList[i].id======"..lvList[i].ShowSkill[3])
|
||
local skillData={}
|
||
skillData.id=lvList[i].ShowSkill[3]
|
||
skillData.state=0
|
||
skillData.des=passiveSkillConfig[skillData.id].Desc
|
||
skillData.openLv =lvList[i].Level
|
||
local type=lvList[i].ShowSkill[1]
|
||
if type==0 then
|
||
if lv>=lvList[i].Level then
|
||
skillData.state=1
|
||
end
|
||
elseif type==1 then
|
||
if lv>=lvList[i].Level and self.curHeroData and self.curHeroData.heroConfig.Profession==lvList[i].ShowSkill[2] then
|
||
skillData.state=1
|
||
end
|
||
skillData.des=skillData.des.."(".. ProfessionType[lvList[i].ShowSkill[2]].."职业佩戴后生效".. ")"
|
||
elseif type==2 then
|
||
if lv>=lvList[i].Level and self.curHeroData and self.curHeroData.staticId==lvList[i].ShowSkill[2] then
|
||
skillData.state=1
|
||
end
|
||
skillData.des=skillData.des.."(".. heroConfig[lvList[i].ShowSkill[2]].ReadingName .."佩戴后生效".. ")"
|
||
end
|
||
table.insert(skillList,skillData)
|
||
end
|
||
|
||
end
|
||
if #skillList>0 then
|
||
self.superPro:SetActive(true)
|
||
--if curGoldSuitConFig then
|
||
local goldSuiteSkill = skillList
|
||
local num=0
|
||
--LogError("curGoldSuitConFig.id======"..curGoldSuitConFig.Id.." curGoldSuitConFig skill len=="..#curGoldSuitConFig.SuiteSkill)
|
||
for i = 1, #goldSuiteSkill do
|
||
num = num + 1
|
||
if not _superProList[num] then
|
||
_superProList[num] = newObjToParent(self.superProPre, self.superProGrid)
|
||
end
|
||
_superProList[num].gameObject:SetActive(true)
|
||
local go = _superProList[num]
|
||
go.gameObject:SetActive(true)
|
||
|
||
local info = go:GetComponent("Text")
|
||
local skillData=goldSuiteSkill[i]
|
||
|
||
if skillData.state==1 then
|
||
info.text = string.format("<color=#1F9E46>%s</color>","["..skillData.openLv.."级开启]:"..GetLanguageStrById(skillData.des))
|
||
else
|
||
info.text = string.format("<color=#574141>%s</color>","["..skillData.openLv.."级开启]:"..GetLanguageStrById(skillData.des))
|
||
end
|
||
end
|
||
-- end
|
||
else
|
||
self.superPro:SetActive(false)
|
||
end
|
||
|
||
--消耗信息
|
||
self:ShowCostInfo()
|
||
--(此处需要三遍才能完全打开)
|
||
ForceRebuildLayout(self.midBar.transform)
|
||
ForceRebuildLayout(self.midBar.transform)
|
||
ForceRebuildLayout(self.midBar.transform)
|
||
|
||
if self.func then
|
||
self.func()
|
||
end
|
||
end
|
||
|
||
function FaLingStrongPopup:ShowCostInfo()
|
||
local cost=talismana.RankupBasicMaterial
|
||
local coinNum=0
|
||
isEnough=true
|
||
LogError("#cost len======================="..#cost)
|
||
if #cost>0 then
|
||
self.costPro:SetActive(true)
|
||
local num=0
|
||
for i = 1, #cost do
|
||
num = num + 1
|
||
if not _costProList[num] then
|
||
_costProList[num] = newObjToParent(self.costProPre, self.costProGrid)
|
||
end
|
||
_costProList[num].gameObject:SetActive(true)
|
||
local go = _costProList[num]
|
||
go.gameObject:SetActive(true)
|
||
local grid = Util.GetGameObject(go,"grid")
|
||
local numTxt=Util.GetGameObject(go,"grid/Text"):GetComponent("Text")
|
||
local btn=Util.GetGameObject(go,"grid/btn")
|
||
|
||
if not self.itemViewList[grid] then
|
||
self.itemViewList[grid] = SubUIManager.Open(SubUIConfig.ItemView,grid.transform)
|
||
end
|
||
local id=cost[i][1]
|
||
--金币不在这里显示
|
||
if id==14 then
|
||
go.gameObject:SetActive(false)
|
||
coinNum=cost[i][2]
|
||
else
|
||
go.gameObject:SetActive(true)
|
||
end
|
||
|
||
local list={}
|
||
local bagNum=0
|
||
if id == 0 then
|
||
id=self.equipData.staticId
|
||
list=FaLingManager.GetAllUpListNoBless(id)
|
||
if #selectMat==0 then
|
||
for j=1,#list do
|
||
if #selectMat < cost[i][2] and list[j].lv==0 then
|
||
table.insert(selectMat,list[j].did)
|
||
end
|
||
end
|
||
end
|
||
bagNum=#selectMat
|
||
else
|
||
bagNum=BagManager.GetItemCountById(cost[i][1])
|
||
end
|
||
if cost[i][2] > bagNum then
|
||
isEnough=false
|
||
numTxt.text=string.format("<color=#FF0000>%s</color>", cost[i][2] .."/"..bagNum)
|
||
else
|
||
numTxt.text=string.format("<color=#59320E>%s</color>", cost[i][2].."/"..bagNum)
|
||
end
|
||
self.itemViewList[grid]:OnOpen(false,{id,0}, 0.8, false, false, false, self.sortingOrder)
|
||
self.itemViewList[grid].gameObject.transform:SetAsFirstSibling()
|
||
Util.AddOnceClick(btn,function ()
|
||
LogError("id========================="..id)
|
||
if id == self.equipData.staticId then
|
||
UIManager.OpenPanel(UIName.FaLingUpStarListPanel,list,self,selectMat,self.curHeroData,cost[i][2])
|
||
else
|
||
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,id)
|
||
end
|
||
end)
|
||
end
|
||
if coinNum>0 then
|
||
self.coinImg.gameObject:SetActive(true)
|
||
self.coinTxt.gameObject:SetActive(true)
|
||
local haveNum=BagManager.GetItemCountById(14)
|
||
--self.coinTxt.text = coinNum
|
||
if coinNum>haveNum then
|
||
self.coinTxt.text=string.format("<color=#FF0000>%s</color>", coinNum .."/"..haveNum)
|
||
else
|
||
self.coinTxt.text=string.format("<color=#59320E>%s</color>", coinNum .."/"..haveNum)
|
||
end
|
||
self.coinImg.sprite=self.spLoader:LoadSprite(GetResourcePath(ConfigManager.GetConfigData(ConfigName.ItemConfig,14).ResourceID))
|
||
else
|
||
self.coinImg.gameObject:SetActive(false)
|
||
self.coinTxt.gameObject:SetActive(false)
|
||
end
|
||
else
|
||
self.costPro:SetActive(false)
|
||
end
|
||
end
|
||
|
||
|
||
|
||
--界面关闭时调用(用于子类重写)
|
||
function FaLingStrongPopup:OnClose()
|
||
if openPanel then
|
||
openPanel:OnShow()
|
||
end
|
||
end
|
||
|
||
--界面销毁时调用(用于子类重写)
|
||
function FaLingStrongPopup:OnDestroy()
|
||
self.spLoader:Destroy()
|
||
self.itemViewList={}
|
||
_BaseProList = {}
|
||
_superProList = {}
|
||
_costProList = {}
|
||
selectMat={}
|
||
|
||
end
|
||
|
||
return FaLingStrongPopup |