miduo_client/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleEquipChangePopup.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