248 lines
9.8 KiB
Lua
248 lines
9.8 KiB
Lua
require("Base/BasePanel")
|
|
GodWeaponInfoPanel = Inherit(BasePanel)
|
|
local this = GodWeaponInfoPanel
|
|
local godwData
|
|
--初始化组件(用于子类重写)
|
|
function this:InitComponent()
|
|
this.btnBack = Util.GetGameObject(self.gameObject, "btnBack")
|
|
this.leftBtn = Util.GetGameObject(self.gameObject, "leftBtn/btn")
|
|
this.rightBtn = Util.GetGameObject(self.gameObject, "rightBtn/btn")
|
|
this.spLoader = SpriteLoader.New()
|
|
this.icon = Util.GetGameObject(self.gameObject, "iconBg/icon"):GetComponent("Image")
|
|
this.nameText = Util.GetGameObject(self.gameObject, "nameInfo/nameText"):GetComponent("Text")
|
|
this.starGrid = Util.GetGameObject(self.gameObject, "starGrid/starGrid")
|
|
this.propGrid = Util.GetGameObject(self.gameObject, "infoLayout/propertyInfo/grid")
|
|
this.upStarBtn = Util.GetGameObject(self.gameObject, "infoLayout/propertyInfo/upStarBtn")
|
|
this.upLvBtn = Util.GetGameObject(self.gameObject, "infoLayout/propertyInfo/upLvBtn")
|
|
this.resetBtn = Util.GetGameObject(self.gameObject, "infoLayout/propertyInfo/resetBtn")
|
|
this.skillGrid = Util.GetGameObject(self.gameObject, "infoLayout/skill/scroll/grid")
|
|
this.unloadBtn = Util.GetGameObject(self.gameObject, "infoLayout/unloadBtn")
|
|
this.changeBtn = Util.GetGameObject(self.gameObject, "infoLayout/changeBtn")
|
|
this.upLvBtnRedPoint = Util.GetGameObject(this.upLvBtn, "redPoint")
|
|
this.upStarBtnRedPoint = Util.GetGameObject(this.upStarBtn, "redPoint")
|
|
end
|
|
|
|
--绑定事件(用于子类重写)
|
|
function this:BindEvent()
|
|
Util.AddClick(this.btnBack, function()
|
|
self:ClosePanel()
|
|
end)
|
|
Util.AddClick(this.leftBtn, function()
|
|
local posIndex = 1
|
|
local allTeam = GodWeaponManager.GetAllTeamWeapon()
|
|
local posList = GodWeaponManager.GetAllTeamWeaponPos()
|
|
for i = 1, #posList do
|
|
if godwData.point == posList[i] then
|
|
posIndex = i
|
|
end
|
|
end
|
|
posIndex = posIndex - 1
|
|
if posIndex <= 0 then
|
|
posIndex = #posList
|
|
end
|
|
local _data = allTeam[posList[posIndex]]
|
|
this.UpdateWin(_data)
|
|
end)
|
|
Util.AddClick(this.rightBtn, function()
|
|
local posIndex = 1
|
|
local allTeam = GodWeaponManager.GetAllTeamWeapon()
|
|
local posList = GodWeaponManager.GetAllTeamWeaponPos()
|
|
for i = 1, #posList do
|
|
if godwData.point == posList[i] then
|
|
posIndex = i
|
|
end
|
|
end
|
|
posIndex = posIndex + 1
|
|
if posIndex > #posList then
|
|
posIndex = 1
|
|
end
|
|
local _data = allTeam[posList[posIndex]]
|
|
this.UpdateWin(_data)
|
|
end)
|
|
Util.AddClick(this.upLvBtn, function()
|
|
UIManager.OpenPanel(UIName.GodWeaponUpPanel, 1, godwData)
|
|
end)
|
|
Util.AddClick(this.upStarBtn, function()
|
|
UIManager.OpenPanel(UIName.GodWeaponUpPanel, 2, godwData)
|
|
end)
|
|
|
|
Util.AddClick(this.unloadBtn, function()
|
|
local oldWarPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
|
|
NetManager.RequestMagicSoldierLocation(godwData.Did, 0, function()
|
|
PopupTipPanel.ShowTip(Language[11188])
|
|
this.unloadBtn.gameObject:SetActive(false)
|
|
this.changeBtn.gameObject:SetActive(false)
|
|
GodWeaponManager.SetWeaponUpZhen(godwData.Did, 0)
|
|
local newWarPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
|
|
--飘战力
|
|
PokemonManager.PiaoWarPowerChange(oldWarPower, newWarPower)
|
|
CheckRedPointStatus(RedPointType.GodWeapon)
|
|
end)
|
|
end)
|
|
Util.AddClick(this.changeBtn, function()
|
|
UIManager.OpenPanel(UIName.GodWeaponListPanel, 1, godwData, godwData.point)
|
|
end)
|
|
Util.AddClick(this.resetBtn, function()
|
|
this.ResetBtnOnClick()
|
|
end)
|
|
end
|
|
|
|
--添加事件监听(用于子类重写)
|
|
function this:AddListener()
|
|
Game.GlobalEvent:AddEvent(GameEvent.GodWeapon.RefreshGodWeaponInfoPanel, this.UpdateWin)
|
|
end
|
|
|
|
--移除事件监听(用于子类重写)
|
|
function this:RemoveListener()
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.GodWeapon.RefreshGodWeaponInfoPanel, this.UpdateWin)
|
|
end
|
|
|
|
--界面打开时调用(用于子类重写)
|
|
function this:OnOpen(_data)
|
|
this.UpdateWin(_data)
|
|
end
|
|
|
|
function this:OnShow()
|
|
local newData = GodWeaponManager.GetSingleWeaponData(godwData.Did)
|
|
this.UpdateWin(newData)
|
|
end
|
|
|
|
function this.UpdateWin(_data)
|
|
if _data.point and _data.point > 0 then
|
|
this.unloadBtn.gameObject:SetActive(true)
|
|
this.changeBtn.gameObject:SetActive(true)
|
|
this.leftBtn.gameObject:SetActive(true)
|
|
this.rightBtn.gameObject:SetActive(true)
|
|
else
|
|
this.unloadBtn.gameObject:SetActive(false)
|
|
this.changeBtn.gameObject:SetActive(false)
|
|
this.leftBtn.gameObject:SetActive(false)
|
|
this.rightBtn.gameObject:SetActive(false)
|
|
end
|
|
|
|
godwData = _data
|
|
local upLvRed = GodWeaponManager.CheckUpLvRedPoint(godwData)
|
|
this.upLvBtnRedPoint:SetActive(upLvRed)
|
|
local upStarRed = GodWeaponManager.CheckUpStarRedPoint(godwData)
|
|
this.upStarBtnRedPoint:SetActive(upStarRed)
|
|
this.icon.sprite = this.spLoader:LoadSprite(GetResourcePath(_data.config.Icon))
|
|
this.nameText.text = GetLanguageStrById(_data.config.Name)
|
|
local starSize = Vector2.New(65, 65)
|
|
PokemonManager.SetHeroStars(this.spLoader, this.starGrid, _data.star, 1, starSize)
|
|
local allPropDic = GodWeaponManager.GetSinglePokemonAddProData(_data.Did, _data.star)
|
|
local propInfoList = {}
|
|
propInfoList[1] = {}
|
|
propInfoList[1].name = Language[10539]
|
|
propInfoList[1].val = _data.lv
|
|
propInfoList[2] = {}
|
|
propInfoList[2].name = Language[10788]
|
|
propInfoList[2].val = _data.star
|
|
local index = 3
|
|
for key, value in pairs(allPropDic) do
|
|
propInfoList[index] = {}
|
|
local propConfig = ConfigManager.GetConfigData(ConfigName.PropertyConfig, key)
|
|
propInfoList[index].name = propConfig.Info
|
|
propInfoList[index].val = value
|
|
index = index + 1
|
|
end
|
|
for i = 1, this.propGrid.transform.childCount do
|
|
local propText = this.propGrid.transform:GetChild(i - 1).gameObject
|
|
if i > #propInfoList then
|
|
propText:SetActive(false)
|
|
else
|
|
propText:SetActive(true)
|
|
propText:GetComponent("Text").text = GetLanguageStrById(propInfoList[i].name)
|
|
Util.GetGameObject(propText, "val"):GetComponent("Text").text = propInfoList[i].val
|
|
end
|
|
end
|
|
|
|
local skillInfo = GodWeaponManager.GetSingleGodWeaponSkillDes(_data.Did)
|
|
for i = 1, this.skillGrid.transform.childCount do
|
|
local skillObj = this.skillGrid.transform:GetChild(i - 1).gameObject
|
|
if i > #skillInfo then
|
|
skillObj:SetActive(false)
|
|
else
|
|
Util.GetGameObject(skillObj, "titleBg/title"):GetComponent("Text").text = GetLanguageStrById(skillInfo[i].title)
|
|
Util.GetGameObject(skillObj, "titleBg/icon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(
|
|
skillInfo[i].icon)
|
|
Util.GetGameObject(skillObj, "des"):GetComponent("Text").text = GetLanguageStrById(skillInfo[i].des)
|
|
skillObj:SetActive(true)
|
|
local allSkillData = ConfigManager.GetAllConfigsDataByDoubleKey(ConfigName.ShenBingSkill, "SkillPanDuan",
|
|
skillInfo[i].skillPanDuan, "SpiritAnimalMatch", _data.id)
|
|
local helpBtn = Util.GetGameObject(skillObj, "titleBg/helpBtn")
|
|
Util.AddOnceClick(helpBtn, function()
|
|
UIManager.OpenPanel(UIName.GodWeaponSkillInfoPopup, skillInfo[i].title, allSkillData)
|
|
end)
|
|
end
|
|
end
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(this.skillGrid.transform)
|
|
end
|
|
|
|
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
|
|
function this.ResetBtnOnClick()
|
|
if godwData.point > 0 then
|
|
PopupTipPanel.ShowTip(Language[11189])
|
|
return
|
|
end
|
|
if godwData.lv == 1 and godwData.star <= 0 then
|
|
PopupTipPanel.ShowTip(Language[11190])
|
|
return
|
|
end
|
|
|
|
local lv = godwData.lv
|
|
local star = godwData.star
|
|
local qua = godwData.config.Quality
|
|
--所有材料
|
|
local allMaterials = {}
|
|
--升级消耗
|
|
local lvConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.ShenBingLevel, "Level", lv, "Quality", qua)
|
|
if lvConfig then
|
|
local matrs = lvConfig.SumConsume
|
|
if matrs then
|
|
for i = 1, #matrs do
|
|
local mat = matrs[i]
|
|
if mat[2] > 0 then
|
|
table.insert(allMaterials, { mat[1], mat[2] })
|
|
end
|
|
end
|
|
end
|
|
end
|
|
--升星消耗
|
|
local lingshouConfig = ConfigManager.GetConfigData(ConfigName.ShenBing, godwData.id)
|
|
if star > 0 then
|
|
local starConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.ShenbingStar, "Star", star, "Quality", qua)
|
|
if starConfig then
|
|
--消耗本体数量
|
|
if starConfig.SumItemNum >= 1 then
|
|
table.insert(allMaterials, { godwData.id, starConfig.SumItemNum })
|
|
end
|
|
end
|
|
end
|
|
UIManager.OpenPanel(UIName.GeneralPopup, GENERAL_POPUP_TYPE.PokemonResolve, lingshouConfig, allMaterials, 2,
|
|
function()
|
|
NetManager.MagicSoldierReturnRequest(godwData.Did, function(msg)
|
|
PopupTipPanel.ShowTip(Language[11191])
|
|
UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1, function()
|
|
GodWeaponManager.ResetGodWeapon(godwData.Did, 1, 0)
|
|
this.UpdateWin(GodWeaponManager.GetSingleWeaponData(godwData.Did))
|
|
end)
|
|
end)
|
|
end)
|
|
end
|
|
|
|
function this:OnSortingOrderChange()
|
|
this.sortingOrder = self.sortingOrder
|
|
end
|
|
|
|
--界面关闭时调用(用于子类重写)
|
|
function this:OnClose()
|
|
|
|
end
|
|
|
|
--界面销毁时调用(用于子类重写)
|
|
function this:OnDestroy()
|
|
this.spLoader:Destroy()
|
|
end
|
|
|
|
return this
|