miduo_client/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleEquipChangePopup.lua

333 lines
17 KiB
Lua
Raw Normal View History

2021-04-21 13:12:04 +08:00
require("Base/BasePanel")
2020-05-09 13:31:21 +08:00
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)
2020-06-13 11:47:13 +08:00
local _MainProList = {}
local _NextProList = {}
2020-05-09 13:31:21 +08:00
--初始化组件(用于子类重写)
function RoleEquipChangePopup:InitComponent()
2021-04-21 13:12:04 +08:00
this.spLoader = SpriteLoader.New()
2020-05-09 13:31:21 +08:00
this.btnBack= Util.GetGameObject(self.transform, "btnBack")
2021-03-07 17:52:23 +08:00
this.go = Util.GetGameObject(self.transform, "GameObject")
this.mainProItem = Util.GetGameObject(this.go,"curProName")
2020-06-13 11:47:13 +08:00
this.mainProItem:SetActive(false)
2021-03-07 17:52:23 +08:00
this.otherProPre=Util.GetGameObject(this.go,"otherPro")
2021-02-25 18:36:50 +08:00
this.otherProPre:SetActive(false)
this.equipPanel = {}
for i = 1 ,2 do
if not this.equipPanel[i] then
this.equipPanel[i] = {}
2021-03-07 17:52:23 +08:00
this.equipPanel[i].bg = Util.GetGameObject(this.go, "bg"..i)
2021-02-25 18:36:50 +08:00
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")
2020-05-09 13:31:21 +08:00
2021-02-25 18:36:50 +08:00
this.equipPanel[i].curotherProscroll=Util.GetGameObject(this.equipPanel[i].bg,"scroll")
this.equipPanel[i].otherProGrid=Util.GetGameObject(this.equipPanel[i].bg,"scroll/grid")
2020-12-17 10:41:00 +08:00
2021-02-25 18:36:50 +08:00
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
2020-05-09 13:31:21 +08:00
end
2021-02-25 18:36:50 +08:00
2020-05-09 13:31:21 +08:00
--绑定事件(用于子类重写)
function RoleEquipChangePopup:BindEvent()
Util.AddClick(this.btnBack, function()
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
self:ClosePanel()
end)
2020-12-17 10:41:00 +08:00
2021-02-25 18:36:50 +08:00
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
2020-05-09 13:31:21 +08:00
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]
2021-04-09 20:31:45 +08:00
elseif type==4 then
curEquipData=data[4]
2020-05-09 13:31:21 +08:00
end
end
2020-07-06 20:35:39 +08:00
2020-05-09 13:31:21 +08:00
function RoleEquipChangePopup:OnShow()
if curHeroData then
equipSuit = HeroManager.GetCurHeroEquipSuitPros(curHeroData.equipIdList)
2020-05-09 13:31:21 +08:00
end
if type==1 then
2021-02-25 18:36:50 +08:00
this.equipPanel[2].bg:SetActive(false)
this.equipPanel[1].bg:SetActive(true)
this.equipPanel[1].curEquipText:SetActive(false)
this.equipPanel[1].curEquipBtnDown:SetActive(true)
2021-04-09 12:26:35 +08:00
this.equipPanel[1].curEquipBtnDownText.text = Language[12220]
2020-05-09 13:31:21 +08:00
this.ShowCurEquipData(1)
elseif type==2 then
2021-02-25 18:36:50 +08:00
this.equipPanel[2].bg:SetActive(false)
this.equipPanel[1].bg:SetActive(true)
2021-03-01 14:49:33 +08:00
this.equipPanel[1].curEquipText:SetActive(false)
2021-02-25 18:36:50 +08:00
this.equipPanel[1].curEquipBtnDown:SetActive(true)
2021-04-09 12:26:35 +08:00
this.equipPanel[1].curEquipBtnDownText.text = Language[12221]
2020-05-09 13:31:21 +08:00
this.ShowCurEquipData(1)
elseif type==3 then
2021-02-25 18:36:50 +08:00
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)
2021-04-09 12:26:35 +08:00
this.equipPanel[2].curEquipBtnDownText.text = Language[12261]
2021-02-25 18:36:50 +08:00
--"替 换"
2020-05-09 13:31:21 +08:00
this.ShowCurEquipData(2)
this.NextCurEquipData()
2021-04-09 20:31:45 +08:00
elseif type==4 then
this.equipPanel[2].bg:SetActive(false)
this.equipPanel[1].bg:SetActive(true)
this.equipPanel[1].curEquipText:SetActive(false)
this.equipPanel[1].curEquipBtnDown:SetActive(false)
this.ShowCurEquipData(4)
2020-05-09 13:31:21 +08:00
end
2021-03-07 17:52:23 +08:00
for i = 1,#this.equipPanel do
2021-03-09 15:39:42 +08:00
ForceRebuildLayout(this.equipPanel[i].bg.transform)
2021-03-07 17:52:23 +08:00
end
2021-03-09 15:39:42 +08:00
ForceRebuildLayout(this.go.transform)
2020-05-09 13:31:21 +08:00
end
2021-02-25 18:36:50 +08:00
function this.SetEquipData(index,data,equipConfigData,itemConfigData)
this.equipPanel[index].powerNum1.text=EquipManager.CalculateWarForce(data.id)
2021-04-21 13:12:04 +08:00
EquipManager.SetEquipStarShow(this.spLoader, this.equipPanel[index].bg1Star,data.id)
2021-02-25 18:36:50 +08:00
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))
2021-04-21 13:12:04 +08:00
this.equipPanel[index].curEquipFrame.sprite = this.spLoader:LoadSprite(GetQuantityImageByquality(equipConfigData.Quality))
this.equipPanel[index].curEquipIcon.sprite = this.spLoader:LoadSprite(GetResourcePath(itemConfigData.ResourceID))
2021-04-09 12:26:35 +08:00
this.equipPanel[index].curEquipTypeText.text=string.format(Language[11555],GetEquipPosStrByEquipPosNum(equipConfigData.Position))
2021-03-19 21:30:22 +08:00
-- local strPos=""
-- if equipConfigData.ProfessionLimit==0 then
2021-04-01 18:41:50 +08:00
-- strPos= "装备种类:%s"
2021-03-19 21:30:22 +08:00
-- else
2021-04-01 18:41:50 +08:00
-- strPos= "装备种类:%s"
2021-03-19 21:30:22 +08:00
-- end
-- this.equipPanel[index].curEquipPosText.text=string.format(strPos,GetJobStrByJobNum(equipConfigData.ProfessionLimit))
2021-04-09 12:26:35 +08:00
this.equipPanel[index].curEquipPosText.text=string.format(Language[12262],GetEquipPosStrByEquipPosNum(equipConfigData.Position))
2021-02-25 18:36:50 +08:00
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
2020-06-13 11:47:13 +08:00
item:SetActive(false)
end
2020-07-06 20:35:39 +08:00
local mainAttribute=EquipManager.GetMainProList(equipConfigData)
2021-02-25 18:36:50 +08:00
for key, prop in ipairs(mainAttribute) do
2020-06-13 11:47:13 +08:00
local proConfigData = ConfigManager.GetConfigData(ConfigName.PropertyConfig, prop.propertyId)
if proConfigData then
2021-02-25 18:36:50 +08:00
if not this.mainProList[index][key] then
this.mainProList[index][key] = newObjToParent(this.mainProItem, this.equipPanel[index].mainProGrid)
2020-06-13 11:47:13 +08:00
end
2021-02-25 18:36:50 +08:00
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")
2020-06-13 11:47:13 +08:00
if prop.propertyValue > 0 then
vText.text = "+"..GetPropertyFormatStr(proConfigData.Style, prop.propertyValue)
else
vText.text = GetPropertyFormatStr(proConfigData.Style, prop.propertyValue)
end
end
end
2021-02-25 18:36:50 +08:00
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)
2021-04-21 13:12:04 +08:00
this.equipPanel[1].powerUPorDown1:GetComponent("Image").sprite=this.spLoader:LoadSprite(PowerChangeIconDef[1])
2021-02-25 18:36:50 +08:00
elseif(EquipManager.CalculateWarForce(nextEquipData.id)>EquipManager.CalculateWarForce(curEquipData.id)) then
this.equipPanel[1].powerUPorDown1:SetActive(true)
2021-04-21 13:12:04 +08:00
this.equipPanel[1].powerUPorDown1:GetComponent("Image").sprite=this.spLoader:LoadSprite(PowerChangeIconDef[2])
2021-02-25 18:36:50 +08:00
end
end
2020-05-09 13:31:21 +08:00
--套装属性
2021-02-25 18:36:50 +08:00
local endProList = {}
2020-12-12 17:07:22 +08:00
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
2021-02-25 18:36:50 +08:00
this.equipPanel[1].curotherProscroll:SetActive(true)
for i = 1, math.max(#endProList, #curSuitProGo) do
2021-02-25 18:36:50 +08:00
if not curSuitProGo[i] then
curSuitProGo[i] = newObjToParent(this.otherProPre,this.equipPanel[1].otherProGrid)
2020-05-09 13:31:21 +08:00
end
2021-02-25 18:36:50 +08:00
curSuitProGo[i].gameObject:SetActive(false)
2020-05-09 13:31:21 +08:00
end
for i = 1, #endProList do
2020-05-09 13:31:21 +08:00
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>" .. GetLanguageStrById(propertyConfig[proId].Info) .."+ "..GetPropertyFormatStr(propertyConfig[proId].Style,proVa) .. "</color>"
Util.GetGameObject(go.transform, "curProVale"):GetComponent("Text").text = "<color=#B9AC97>(" .. GetEquipSuitStr(Star,suitNum) .. ")</color>"
2020-12-12 17:07:22 +08:00
if type == 2 and #equipSuit > 0 then--激活的要变颜色
Util.GetGameObject(go.transform, "curProName"):GetComponent("Text").text = "<color=#66FF00>" .. GetLanguageStrById(propertyConfig[proId].Info) .."+ "..GetPropertyFormatStr(propertyConfig[proId].Style,proVa) .. "</color>"
Util.GetGameObject(go.transform, "curProVale"):GetComponent("Text").text = "<color=#66FF00>(" .. GetEquipSuitStr(Star,suitNum) .. ")</color>"
2020-05-09 13:31:21 +08:00
end
end
else
2021-02-25 18:36:50 +08:00
this.equipPanel[1].curotherProscroll:SetActive(false)
2020-05-09 13:31:21 +08:00
end
end
function this.NextCurEquipData()
local equipConfigData=ConfigManager.GetConfigData(ConfigName.EquipConfig, nextEquipData.id)
2021-02-25 18:36:50 +08:00
local itemConfigData=ConfigManager.GetConfigData(ConfigName.ItemConfig, nextEquipData.id)
this.SetEquipData(2,nextEquipData,equipConfigData,itemConfigData)
2020-07-06 20:35:39 +08:00
2021-02-25 18:36:50 +08:00
this.equipPanel[2].powerUPorDown1:SetActive(false)
2020-07-06 20:35:39 +08:00
if(EquipManager.CalculateWarForce(nextEquipData.id)>EquipManager.CalculateWarForce(curEquipData.id)) then
2021-02-25 18:36:50 +08:00
this.equipPanel[2].powerUPorDown1:SetActive(true)
2021-04-21 13:12:04 +08:00
this.equipPanel[2].powerUPorDown1:GetComponent("Image").sprite=this.spLoader:LoadSprite(PowerChangeIconDef[1])
2021-02-25 18:36:50 +08:00
elseif(EquipManager.CalculateWarForce(nextEquipData.id)<EquipManager.CalculateWarForce(curEquipData.id)) then
this.equipPanel[2].powerUPorDown1:SetActive(true)
2021-04-21 13:12:04 +08:00
this.equipPanel[2].powerUPorDown1:GetComponent("Image").sprite=this.spLoader:LoadSprite(PowerChangeIconDef[2])
2020-06-13 11:47:13 +08:00
end
2020-07-06 20:35:39 +08:00
2020-05-09 13:31:21 +08:00
--套装属性
--LogGreen("equipConfigData.Star:"..equipConfigData.Star)
if equipSuiteConfig[equipConfigData.Star] then
2021-02-25 18:36:50 +08:00
this.equipPanel[2].curotherProscroll:SetActive(true)
local curSuitConFig = equipSuiteConfig[equipConfigData.Star]
2020-05-09 13:31:21 +08:00
if curSuitConFig then
for i = 1, math.max(#curSuitConFig.SuiteValue, #nextSuitProGo) do
2021-02-25 18:36:50 +08:00
if not nextSuitProGo[i] then
nextSuitProGo[i] = newObjToParent(this.otherProPre,this.equipPanel[2].otherProGrid)
2020-05-09 13:31:21 +08:00
end
2021-02-25 18:36:50 +08:00
nextSuitProGo[i].gameObject:SetActive(false)
2020-05-09 13:31:21 +08:00
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>" .. GetLanguageStrById(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>"
2020-05-09 13:31:21 +08:00
end
end
else
2021-02-25 18:36:50 +08:00
this.equipPanel[2].curotherProscroll:SetActive(false)
2020-05-09 13:31:21 +08:00
end
end
--界面关闭时调用(用于子类重写)
function RoleEquipChangePopup:OnClose()
end
--界面销毁时调用(用于子类重写)
function RoleEquipChangePopup:OnDestroy()
2021-04-21 13:12:04 +08:00
this.spLoader:Destroy()
2020-05-09 13:31:21 +08:00
curSuitProGo = {}
nextSuitProGo = {}
2021-02-25 18:36:50 +08:00
this.mainProList = {}
2020-05-09 13:31:21 +08:00
end
2020-06-23 18:36:24 +08:00
return RoleEquipChangePopup