316 lines
16 KiB
Lua
316 lines
16 KiB
Lua
require("Base/BasePanel")
|
|
RoleEquipChangePopup = Inherit(BasePanel)
|
|
local this=RoleEquipChangePopup
|
|
local type--1 穿装备 2 卸装备 3 替换装备
|
|
local curHeroData
|
|
local curEquipData
|
|
local nextEquipData
|
|
local openThisPanel
|
|
local equipIdList
|
|
local equipDataList
|
|
local position
|
|
local curSuitProGo = {}--当前套装属性对象
|
|
local nextSuitProGo = {}--将要替换套装属性对象
|
|
local equipSuit = {}--当前英雄穿戴装备的套装信息 [suitId] = 件数
|
|
local equipSuiteConfig = ConfigManager.GetConfig(ConfigName.EquipSuiteConfig)
|
|
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
|
|
local _MainProList = {}
|
|
local _NextProList = {}
|
|
--初始化组件(用于子类重写)
|
|
function RoleEquipChangePopup:InitComponent()
|
|
|
|
this.btnBack= Util.GetGameObject(self.transform, "btnBack")
|
|
local go = Util.GetGameObject(self.transform, "GameObject")
|
|
this.mainProItem = Util.GetGameObject(go,"curProName")
|
|
this.mainProItem:SetActive(false)
|
|
this.otherProPre=Util.GetGameObject(go,"otherPro")
|
|
this.otherProPre:SetActive(false)
|
|
this.equipPanel = {}
|
|
for i = 1 ,2 do
|
|
if not this.equipPanel[i] then
|
|
this.equipPanel[i] = {}
|
|
this.equipPanel[i].bg = Util.GetGameObject(go, "bg"..i)
|
|
this.equipPanel[i].equipInfo = Util.GetGameObject(this.equipPanel[i].bg,"equipInfo")
|
|
this.equipPanel[i].desc= Util.GetGameObject(this.equipPanel[i].equipInfo,"Text"):GetComponent("Text")
|
|
this.equipPanel[i].curEquipName=Util.GetGameObject(this.equipPanel[i].equipInfo,"name/text"):GetComponent("Text")
|
|
this.equipPanel[i].curEquipFrame=Util.GetGameObject(this.equipPanel[i].equipInfo,"frame"):GetComponent("Image")
|
|
this.equipPanel[i].curEquipIcon=Util.GetGameObject(this.equipPanel[i].equipInfo,"icon"):GetComponent("Image")
|
|
this.equipPanel[i].qualityText=Util.GetGameObject(this.equipPanel[i].equipInfo,"qualityText"):GetComponent("Text")
|
|
this.equipPanel[i].powerNum1=Util.GetGameObject(this.equipPanel[i].equipInfo,"powerNum"):GetComponent("Text")
|
|
this.equipPanel[i].powerUPorDown1=Util.GetGameObject(this.equipPanel[i].equipInfo,"powerUPorDown")
|
|
this.equipPanel[i].bg1Star=Util.GetGameObject(this.equipPanel[i].equipInfo,"star")
|
|
this.equipPanel[i].proGrid = Util.GetGameObject(this.equipPanel[i].equipInfo,"proGrid")
|
|
|
|
this.equipPanel[i].curEquipTypeText=Util.GetGameObject(this.equipPanel[i].proGrid,"equipTypeText"):GetComponent("Text")
|
|
this.equipPanel[i].curEquipLvText=Util.GetGameObject(this.equipPanel[i].proGrid,"equipLvText")
|
|
this.equipPanel[i].curEquipLvText:SetActive(false)
|
|
this.equipPanel[i].curEquipOrOkText=Util.GetGameObject(this.equipPanel[i].proGrid,"equipOrOkText"):GetComponent("Text")
|
|
this.equipPanel[i].curEquipPosText=Util.GetGameObject(this.equipPanel[i].proGrid,"equipPosText"):GetComponent("Text")
|
|
|
|
this.equipPanel[i].mainProGrid = Util.GetGameObject(this.equipPanel[i].bg,"mainPro/bg")
|
|
|
|
|
|
this.equipPanel[i].curotherProscroll=Util.GetGameObject(this.equipPanel[i].bg,"scroll")
|
|
this.equipPanel[i].otherProGrid=Util.GetGameObject(this.equipPanel[i].bg,"scroll/grid")
|
|
|
|
this.equipPanel[i].castInfoObject=Util.GetGameObject(this.equipPanel[i].bg,"castInfoObject")
|
|
this.equipPanel[i].curCastInfo=Util.GetGameObject( this.equipPanel[i].castInfoObject,"castInfo"):GetComponent("Text")
|
|
this.equipPanel[i].castInfoObject:SetActive(false)
|
|
|
|
this.equipPanel[i].curEquipBtnRefresh=Util.GetGameObject(this.equipPanel[i].bg,"btns/btnRefresh")
|
|
this.equipPanel[i].curEquipBtnRefresh.gameObject:SetActive(false)
|
|
this.equipPanel[i].curEquipBtnDown=Util.GetGameObject(this.equipPanel[i].bg,"btns/btnChange")
|
|
this.equipPanel[i].curEquipBtnDownText=Util.GetGameObject(this.equipPanel[i].curEquipBtnDown,"Text"):GetComponent("Text")
|
|
this.equipPanel[i].curEquipText=Util.GetGameObject(this.equipPanel[i].bg,"btns/curEquipText")
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
--绑定事件(用于子类重写)
|
|
function RoleEquipChangePopup:BindEvent()
|
|
|
|
Util.AddClick(this.btnBack, function()
|
|
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
|
|
self:ClosePanel()
|
|
end)
|
|
|
|
for i = 1,#this.equipPanel do
|
|
Util.AddClick(this.equipPanel[i].curEquipBtnDown, function()
|
|
equipIdList={}
|
|
equipDataList={}
|
|
if i == 1 then
|
|
table.insert(equipIdList,tostring(curEquipData.id))
|
|
table.insert(equipDataList,curEquipData)
|
|
if type == 1 then
|
|
NetManager.EquipWearRequest(curHeroData.dynamicId,equipIdList,1,function ()
|
|
self:ClosePanel()
|
|
openThisPanel.UpdateEquipPosHeroData(1,type,equipDataList,0,position)
|
|
end)
|
|
else
|
|
NetManager.EquipUnLoadOptRequest(curHeroData.dynamicId,equipIdList ,1, function ()
|
|
self:ClosePanel()
|
|
openThisPanel.UpdateEquipPosHeroData(1,type,equipDataList)
|
|
end)
|
|
end
|
|
elseif i == 2 then
|
|
table.insert(equipIdList,tostring(nextEquipData.id))
|
|
table.insert(equipDataList,nextEquipData)
|
|
NetManager.EquipWearRequest(curHeroData.dynamicId,equipIdList,1,function ()
|
|
self:ClosePanel()
|
|
openThisPanel.UpdateEquipPosHeroData(1,type,equipDataList,curEquipData,position)
|
|
end)
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
|
|
--添加事件监听(用于子类重写)
|
|
function RoleEquipChangePopup:AddListener()
|
|
|
|
end
|
|
|
|
--移除事件监听(用于子类重写)
|
|
function RoleEquipChangePopup:RemoveListener()
|
|
|
|
end
|
|
|
|
--界面打开时调用(用于子类重写)
|
|
function RoleEquipChangePopup:OnOpen(...)
|
|
|
|
local data={...}
|
|
openThisPanel=data[1]
|
|
type=data[2]--1 穿戴 2 卸下 3 替换
|
|
if type==1 or type==2 then
|
|
curHeroData=data[3]
|
|
curEquipData=data[4]
|
|
position=data[5]
|
|
elseif type==3 then
|
|
curHeroData=data[3]
|
|
curEquipData=data[4]
|
|
nextEquipData=data[5]
|
|
position=data[6]
|
|
end
|
|
end
|
|
|
|
function RoleEquipChangePopup:OnShow()
|
|
if curHeroData then
|
|
equipSuit = HeroManager.GetCurHeroEquipSuitPros(curHeroData.equipIdList)
|
|
end
|
|
if type==1 then
|
|
this.equipPanel[2].bg:SetActive(false)
|
|
this.equipPanel[1].bg:SetActive(true)
|
|
this.equipPanel[1].curEquipText:SetActive(false)
|
|
this.equipPanel[1].curEquipBtnDown:SetActive(true)
|
|
this.equipPanel[1].curEquipBtnDownText.text = Language[12220]
|
|
this.ShowCurEquipData(1)
|
|
elseif type==2 then
|
|
this.equipPanel[2].bg:SetActive(false)
|
|
this.equipPanel[1].bg:SetActive(true)
|
|
this.equipPanel[1].curEquipText:SetActive(false)
|
|
this.equipPanel[1].curEquipBtnDown:SetActive(true)
|
|
this.equipPanel[1].curEquipBtnDownText.text = Language[12221]
|
|
this.ShowCurEquipData(1)
|
|
elseif type==3 then
|
|
this.equipPanel[2].bg:SetActive(true)
|
|
this.equipPanel[1].bg:SetActive(true)
|
|
this.equipPanel[1].curEquipText:SetActive(true)
|
|
this.equipPanel[2].curEquipText:SetActive(false)
|
|
this.equipPanel[1].curEquipBtnDown:SetActive(false)
|
|
this.equipPanel[2].curEquipBtnDown:SetActive(true)
|
|
--"替 换"
|
|
this.ShowCurEquipData(2)
|
|
this.NextCurEquipData()
|
|
end
|
|
end
|
|
function this.SetEquipData(index,data,equipConfigData,itemConfigData)
|
|
this.equipPanel[index].powerNum1.text=EquipManager.CalculateWarForce(data.id)
|
|
EquipManager.SetEquipStarShow(this.equipPanel[index].bg1Star,data.id)
|
|
this.equipPanel[index].desc.text= GetLanguageStrById(itemConfigData.ItemDescribe)
|
|
|
|
this.equipPanel[index].qualityText.text= GetStringByEquipQua(equipConfigData.Quality,GetQuaStringByEquipQua(equipConfigData.Quality))
|
|
this.equipPanel[index].curEquipName.text=GetStringByEquipQua(equipConfigData.Quality,GetLanguageStrById(equipConfigData.Name))
|
|
this.equipPanel[index].curEquipFrame.sprite = Util.LoadSprite(curEquipData.frame)
|
|
this.equipPanel[index].curEquipIcon.sprite = Util.LoadSprite(curEquipData.icon)
|
|
this.equipPanel[index].curEquipTypeText.text=string.format(Language[11555],GetEquipPosStrByEquipPosNum(equipConfigData.Position))
|
|
local strPos=""
|
|
if equipConfigData.ProfessionLimit==0 then
|
|
strPos= Language[11094]
|
|
else
|
|
strPos= Language[11824]
|
|
end
|
|
this.equipPanel[index].curEquipPosText.text=string.format(strPos,GetJobStrByJobNum(equipConfigData.ProfessionLimit))
|
|
|
|
if not this.mainProList then
|
|
this.mainProList = {}
|
|
end
|
|
if not this.mainProList[index] then
|
|
this.mainProList[index] = {}
|
|
end
|
|
for _, item in ipairs(this.mainProList[index]) do
|
|
item:SetActive(false)
|
|
end
|
|
local mainAttribute=EquipManager.GetMainProList(equipConfigData)
|
|
for key, prop in ipairs(mainAttribute) do
|
|
local proConfigData = ConfigManager.GetConfigData(ConfigName.PropertyConfig, prop.propertyId)
|
|
if proConfigData then
|
|
if not this.mainProList[index][key] then
|
|
this.mainProList[index][key] = newObjToParent(this.mainProItem, this.equipPanel[index].mainProGrid)
|
|
end
|
|
this.mainProList[index][key]:SetActive(true)
|
|
this.mainProList[index][key]:GetComponent("Text").text = GetLanguageStrById(proConfigData.Info)
|
|
local vText = Util.GetGameObject(this.mainProList[index][key], "curProVale"):GetComponent("Text")
|
|
if prop.propertyValue > 0 then
|
|
vText.text = "+"..GetPropertyFormatStr(proConfigData.Style, prop.propertyValue)
|
|
else
|
|
vText.text = GetPropertyFormatStr(proConfigData.Style, prop.propertyValue)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
-- 1 当前 2 下一个
|
|
function this.ShowCurEquipData(index)
|
|
local equipConfigData=ConfigManager.GetConfigData(ConfigName.EquipConfig, curEquipData.id)
|
|
local itemConfigData=ConfigManager.GetConfigData(ConfigName.ItemConfig, curEquipData.id)
|
|
this.SetEquipData(1,curEquipData,equipConfigData,itemConfigData)
|
|
|
|
this.equipPanel[1].powerUPorDown1:SetActive(false)
|
|
if(nextEquipData~=nil and index==2) then
|
|
if(EquipManager.CalculateWarForce(nextEquipData.id)<EquipManager.CalculateWarForce(curEquipData.id)) then
|
|
this.equipPanel[1].powerUPorDown1:SetActive(true)
|
|
this.equipPanel[1].powerUPorDown1:GetComponent("Image").sprite=Util.LoadSprite(PowerChangeIconDef[1])
|
|
elseif(EquipManager.CalculateWarForce(nextEquipData.id)>EquipManager.CalculateWarForce(curEquipData.id)) then
|
|
this.equipPanel[1].powerUPorDown1:SetActive(true)
|
|
this.equipPanel[1].powerUPorDown1:GetComponent("Image").sprite=Util.LoadSprite(PowerChangeIconDef[2])
|
|
end
|
|
end
|
|
|
|
--套装属性
|
|
local endProList = {}
|
|
if type == 1 or #equipSuit <= 0 then
|
|
LogGreen("equipConfigData.Star111111:"..equipConfigData.Star)
|
|
if equipSuiteConfig[equipConfigData.Star] then
|
|
for i = 1, #equipSuiteConfig[equipConfigData.Star].SuiteValue do
|
|
table.insert(endProList,{equipConfigData.Star,equipSuiteConfig[equipConfigData.Star].SuiteValue[i]})
|
|
end
|
|
end
|
|
else
|
|
endProList = equipSuit
|
|
end
|
|
if endProList and #endProList > 0 then
|
|
this.equipPanel[1].curotherProscroll:SetActive(true)
|
|
for i = 1, math.max(#endProList, #curSuitProGo) do
|
|
if not curSuitProGo[i] then
|
|
curSuitProGo[i] = newObjToParent(this.otherProPre,this.equipPanel[1].otherProGrid)
|
|
end
|
|
curSuitProGo[i].gameObject:SetActive(false)
|
|
end
|
|
for i = 1, #endProList do
|
|
local go = curSuitProGo[i]
|
|
go.gameObject:SetActive(true)
|
|
--type=data[2]--1 穿戴 2 卸下 3 替换
|
|
local proId = endProList[i][2][2]
|
|
local proVa = endProList[i][2][3]
|
|
local suitNum = endProList[i][2][1]
|
|
local Star = endProList[i][1]
|
|
Util.GetGameObject(go.transform, "curProName"):GetComponent("Text").text = "<color=#B9AC97>" .. propertyConfig[proId].Info .."+ "..GetPropertyFormatStr(propertyConfig[proId].Style,proVa) .. "</color>"
|
|
Util.GetGameObject(go.transform, "curProVale"):GetComponent("Text").text = "<color=#B9AC97>(" .. GetEquipSuitStr(Star,suitNum) .. ")</color>"
|
|
if type == 2 and #equipSuit > 0 then--激活的要变颜色
|
|
Util.GetGameObject(go.transform, "curProName"):GetComponent("Text").text = "<color=#66FF00>" .. propertyConfig[proId].Info .."+ "..GetPropertyFormatStr(propertyConfig[proId].Style,proVa) .. "</color>"
|
|
Util.GetGameObject(go.transform, "curProVale"):GetComponent("Text").text = "<color=#66FF00>(" .. GetEquipSuitStr(Star,suitNum) .. ")</color>"
|
|
end
|
|
end
|
|
else
|
|
this.equipPanel[1].curotherProscroll:SetActive(false)
|
|
end
|
|
end
|
|
function this.NextCurEquipData()
|
|
local equipConfigData=ConfigManager.GetConfigData(ConfigName.EquipConfig, nextEquipData.id)
|
|
local itemConfigData=ConfigManager.GetConfigData(ConfigName.ItemConfig, nextEquipData.id)
|
|
this.SetEquipData(2,nextEquipData,equipConfigData,itemConfigData)
|
|
|
|
this.equipPanel[2].powerUPorDown1:SetActive(false)
|
|
if(EquipManager.CalculateWarForce(nextEquipData.id)>EquipManager.CalculateWarForce(curEquipData.id)) then
|
|
this.equipPanel[2].powerUPorDown1:SetActive(true)
|
|
this.equipPanel[2].powerUPorDown1:GetComponent("Image").sprite=Util.LoadSprite(PowerChangeIconDef[1])
|
|
elseif(EquipManager.CalculateWarForce(nextEquipData.id)<EquipManager.CalculateWarForce(curEquipData.id)) then
|
|
this.equipPanel[2].powerUPorDown1:SetActive(true)
|
|
this.equipPanel[2].powerUPorDown1:GetComponent("Image").sprite=Util.LoadSprite(PowerChangeIconDef[2])
|
|
end
|
|
|
|
--套装属性
|
|
LogGreen("equipConfigData.Star:"..equipConfigData.Star)
|
|
if equipSuiteConfig[equipConfigData.Star] then
|
|
this.equipPanel[2].curotherProscroll:SetActive(true)
|
|
local curSuitConFig = equipSuiteConfig[equipConfigData.Star]
|
|
if curSuitConFig then
|
|
for i = 1, math.max(#curSuitConFig.SuiteValue, #nextSuitProGo) do
|
|
if not nextSuitProGo[i] then
|
|
nextSuitProGo[i] = newObjToParent(this.otherProPre,this.equipPanel[2].otherProGrid)
|
|
end
|
|
nextSuitProGo[i].gameObject:SetActive(false)
|
|
end
|
|
for i = 1, #curSuitConFig.SuiteValue do
|
|
local go = nextSuitProGo[i]
|
|
go.gameObject:SetActive(true)
|
|
--type=data[2]--1 穿戴 2 卸下 3 替换
|
|
Util.GetGameObject(go.transform, "curProName"):GetComponent("Text").text = "<color=#B9AC97>" .. propertyConfig[curSuitConFig.SuiteValue[i][2]].Info .."+ "..GetPropertyFormatStr(propertyConfig[curSuitConFig.SuiteValue[i][2]].Style,curSuitConFig.SuiteValue[i][3]).. "</color>"
|
|
Util.GetGameObject(go.transform, "curProVale"):GetComponent("Text").text = "<color=#B9AC97>(+" .. GetEquipSuitStr(equipConfigData.Star,curSuitConFig.SuiteValue[i][1]) .. ")</color>"
|
|
end
|
|
end
|
|
else
|
|
this.equipPanel[2].curotherProscroll:SetActive(false)
|
|
end
|
|
end
|
|
--界面关闭时调用(用于子类重写)
|
|
function RoleEquipChangePopup:OnClose()
|
|
end
|
|
|
|
--界面销毁时调用(用于子类重写)
|
|
function RoleEquipChangePopup:OnDestroy()
|
|
curSuitProGo = {}
|
|
nextSuitProGo = {}
|
|
this.mainProList = {}
|
|
end
|
|
|
|
return RoleEquipChangePopup |