319 lines
13 KiB
Lua
319 lines
13 KiB
Lua
require("Base/BasePanel")
|
||
RewardGemSingleShowPopup = Inherit(BasePanel)
|
||
local this = RewardGemSingleShowPopup
|
||
local JumpConfig = ConfigManager.GetConfig(ConfigName.JumpConfig)
|
||
local RechargeCommodityConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
|
||
local gemConfig = ConfigManager.GetConfig(ConfigName.GemConfigNew)
|
||
local PropertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
|
||
local itemSid
|
||
local itemData
|
||
local itemConfigData
|
||
local func
|
||
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
||
--初始化组件(用于子类重写)
|
||
function RewardGemSingleShowPopup:InitComponent()
|
||
this.spLoader = SpriteLoader.New()
|
||
|
||
this.BtnBack = Util.GetGameObject(self.transform, "bg/btnBack")
|
||
this.mask = Util.GetGameObject(self.transform, "mask")
|
||
|
||
this.topBar = Util.GetGameObject(self.transform, "bg/topBar")
|
||
this.itemPos = Util.GetGameObject(self.transform, "bg/topBar/armor/itemPos")
|
||
this.itemView = SubUIManager.Open(SubUIConfig.ItemView,this.itemPos.transform)
|
||
this.armorType = Util.GetGameObject(self.transform, "bg/topBar/armor/info/armorType"):GetComponent("Text")
|
||
this.armorLanTuNum = Util.GetGameObject(self.transform, "bg/topBar/armor/info/armorLanTuNum"):GetComponent("Text")
|
||
this.effectbaijin = Util.GetGameObject(self.topBar, "fx_zhuangbeijiemian")
|
||
|
||
this.info = Util.GetGameObject(self.transform, "bg/topBar/armor/info")
|
||
this.itemName = Util.GetGameObject(this.info, "name"):GetComponent("Text")
|
||
this.armorTitle = Util.GetGameObject(this.info, "armorTitle"):GetComponent("Text")
|
||
this.armorDesc = Util.GetGameObject(this.info, "armorDesc"):GetComponent("Text")
|
||
this.equipQuaText = Util.GetGameObject(self.transform, "bg/topBar/armor/equipQuaText"):GetComponent("Text")
|
||
this.armorInfo = Util.GetGameObject(self.transform, "bg/topBar/armorInfo")
|
||
this.armorInfoText = Util.GetGameObject(self.transform, "bg/topBar/armorInfo"):GetComponent("Text")
|
||
this.howGet = Util.GetGameObject(self.transform, "bg/midBar/layout1")
|
||
this.scroll = Util.GetGameObject(self.transform, "bg/midBar/scroll")
|
||
this.equipProGrid = Util.GetGameObject(self.transform, "bg/midBar/scroll/grid")
|
||
this.equipProGridCom = Util.GetGameObject(self.transform, "bg/midBar/scroll/grid"):GetComponent("VerticalLayoutGroup")
|
||
this.bottomBar = Util.GetGameObject(self.transform, "bg/bottomBar")
|
||
this.btnSure = Util.GetGameObject(self.transform, "bg/bottomBar/btnSure")
|
||
this.btnJump = Util.GetGameObject(self.transform, "bg/bottomBar/btnJump")
|
||
this.jumpRed = Util.GetGameObject(this.btnJump, "RedPoint")
|
||
this.btnClose = Util.GetGameObject(self.transform, "bg/bottomBar/btnClose")
|
||
this.closeRed = Util.GetGameObject(this.btnClose, "RedPoint")
|
||
this.btnUse = Util.GetGameObject(self.transform, "bg/bottomBar/btnUse")
|
||
|
||
this.proGrid = Util.GetGameObject(self.transform, "bg/midBar/GemPro/grid")
|
||
this.proPre = Util.GetGameObject(this.proGrid, "proName")
|
||
this.proPre:SetActive(false)
|
||
this.proList = {}
|
||
|
||
end
|
||
|
||
--绑定事件(用于子类重写)
|
||
function RewardGemSingleShowPopup:BindEvent()
|
||
|
||
Util.AddClick(this.BtnBack, function()
|
||
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
|
||
PlayerManager.RewardItemSingleShowPopupIsRoleUpStarLayout2 = false
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(this.mask, function()
|
||
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
|
||
PlayerManager.RewardItemSingleShowPopupIsRoleUpStarLayout2 = false
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(this.btnUse, function()--使用跳转
|
||
JumpManager.GoJump(40056)
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(this.btnClose, function()--替换,穿戴
|
||
self:ClosePanel()
|
||
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.SelectGem,this.gemType,this.position)
|
||
end)
|
||
Util.AddClick(this.btnSure, function()--卸下命石
|
||
NetManager.LifeGridChangeRequest(2,this.gemType,this.position,itemSid,function ()
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.Gem.RefreshPanel)
|
||
self:ClosePanel()
|
||
end)
|
||
end)
|
||
Util.AddClick(this.btnJump, function()--合成
|
||
if this.openType == 2 then--命格界面中
|
||
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.GemCompound,itemSid,this.position)
|
||
self:ClosePanel()
|
||
elseif this.openType == 1 then--背包中
|
||
local num = BagManager.GetTotalItemNum(itemSid)
|
||
if num/gemConfig[itemSid].UpgradeNum >= 2 then
|
||
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.GemMoreCom,itemSid,num)
|
||
self:ClosePanel()
|
||
else
|
||
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.GemCompound,itemSid,nil)
|
||
self:ClosePanel()
|
||
end
|
||
end
|
||
end)
|
||
end
|
||
|
||
--添加事件监听(用于子类重写)
|
||
function RewardGemSingleShowPopup:AddListener()
|
||
|
||
end
|
||
|
||
--移除事件监听(用于子类重写)
|
||
function RewardGemSingleShowPopup:RemoveListener()
|
||
|
||
end
|
||
|
||
function RewardGemSingleShowPopup:OnSortingOrderChange()
|
||
Util.SetParticleSortLayer(this.effectbaijin,self.sortingOrder + 1)
|
||
end
|
||
|
||
--界面打开时调用(用于子类重写)
|
||
function RewardGemSingleShowPopup:OnOpen(...)
|
||
local data = { ... }
|
||
itemData = data[1]
|
||
--itemConfigData = ConfigManager.GetConfigData(ConfigName.ItemConfig, itemSid)
|
||
this.openType = data[2]
|
||
if data[3] then
|
||
func = data[3]
|
||
end
|
||
if data[4] then
|
||
this.gemType = data[4]
|
||
end
|
||
if data[5] then
|
||
this.position = data[5]
|
||
end
|
||
end
|
||
function RewardGemSingleShowPopup:OnShow()
|
||
Log("itemSid:"..tostring(itemSid))
|
||
this.itemName.text =GetLanguageStrById(itemData.config.Name)-- GetStringByEquipQua(itemData.config.Quality, GetLanguageStrById(itemData.config.Name))
|
||
--LogError(GetStringByEquipQua(itemConfigData.Quantity, GetLanguageStrById(itemConfigData.Name)))
|
||
this.topBar:GetComponent("Image").sprite = self.spLoader:LoadSprite("Bg_hz_beibao_pinjise_00"..itemData.config.Quality)
|
||
this.howGet:SetActive(false)
|
||
this.scroll:SetActive(false)
|
||
this.btnClose:SetActive(false)
|
||
this.btnSure:SetActive(false)
|
||
this.btnJump:SetActive(false)
|
||
this.bottomBar:SetActive(false)
|
||
this.btnUse:SetActive(false)
|
||
if this.openType == 1 then--背包中打开
|
||
this.howGet:SetActive(true)
|
||
this.scroll:SetActive(true)
|
||
this.btnJump:SetActive(false)
|
||
this.bottomBar:SetActive(true)
|
||
this.btnUse:SetActive(true)
|
||
elseif this.openType == 2 then--装备命石时打开
|
||
this.btnClose:SetActive(true)
|
||
this.btnSure:SetActive(true)
|
||
this.btnJump:SetActive(true)
|
||
this.bottomBar:SetActive(true)
|
||
if gemConfig[itemSid].Level == 10 then--十级命石不显示合成
|
||
this.btnJump:SetActive(false)
|
||
end
|
||
elseif this.openType == 3 then--itemview打开
|
||
this.howGet:SetActive(true)
|
||
this.scroll:SetActive(true)
|
||
this.bottomBar:SetActive(false)
|
||
end
|
||
--装备命石时检测红点
|
||
this.RedPointCheck()
|
||
|
||
local creatJumpData = function(jumpDataList)
|
||
local jumpSortData = {}
|
||
if jumpDataList and #jumpDataList > 0 then
|
||
for i = 1, #jumpDataList do--为关卡跳转做的排序数据
|
||
local jumpData = {}
|
||
jumpData.id = jumpDataList[i]
|
||
jumpData.data = JumpConfig[jumpDataList[i]]
|
||
table.insert(jumpSortData,jumpData)
|
||
end
|
||
end
|
||
return jumpSortData
|
||
end
|
||
|
||
if this.jumpViewList and #this.jumpViewList > 0 then
|
||
for i = 1,#this.jumpViewList do
|
||
SubUIManager.Close(this.jumpViewList[i])
|
||
end
|
||
end
|
||
this.jumpViewList = {}
|
||
|
||
this.equipQuaText.gameObject:SetActive(true)
|
||
this.equipQuaText.text = GetStringByEquipQua(itemData.config.Quality, GetQuaStringByEquipQua(itemData.config.Quality))
|
||
this.armorInfo.gameObject:SetActive(true)
|
||
this.armorTitle.gameObject:SetActive(false)
|
||
this.armorDesc.gameObject:SetActive(false)
|
||
this.armorType.gameObject:SetActive(true)
|
||
this.armorLanTuNum.text = ""--Language[11516] .. BagManager.GetItemCountById(itemSid)
|
||
this.armorLanTuNum.gameObject:SetActive(this.openType ~= 2)
|
||
this.armorType.text ="" --this.getType()--道具类型显示
|
||
this.armorInfoText.text ="" --string.gsub(GetLanguageStrById(itemConfigData.ItemDescribe), "\\n", "")
|
||
this.effectbaijin:SetActive(itemData.config.Quality==7)
|
||
Util.SetParticleSortLayer(this.effectbaijin,self.sortingOrder + 1)
|
||
--显示跳转
|
||
local jumpDataList = {} --itemConfigData.Jump
|
||
local jumpSortData = creatJumpData(jumpDataList)
|
||
for i = 1, #jumpSortData do
|
||
-- type 大于 10000为活动 直接显示按钮,如果小于1000 为功能 开启才显示
|
||
if jumpSortData[i].id > 0 and (JumpConfig[jumpSortData[i].id].Type >= 10000 or ActTimeCtrlManager.SingleFuncState(JumpConfig[jumpSortData[i].id].Type)) then
|
||
local tempView = SubUIManager.Open(SubUIConfig.JumpView, this.equipProGrid.transform, jumpSortData[i].id,true,self)
|
||
if tempView then
|
||
table.insert(this.jumpViewList,tempView)
|
||
end
|
||
end
|
||
end
|
||
this.scroll:GetComponent("RectTransform").sizeDelta = Vector2.New(912.8,600)
|
||
this.equipProGridCom.spacing = 130
|
||
if jumpDataList and #jumpDataList then
|
||
this.equipProGrid:GetComponent("RectTransform").sizeDelta = Vector2.New(807.7,this.equipProGridCom.spacing*(#jumpDataList))
|
||
end
|
||
this.itemView:OnOpen(true, itemData, 1.1, false, false, false, self.sortingOrder)
|
||
|
||
--设置命石属性
|
||
this.SetGemProperty()
|
||
end
|
||
|
||
function this.RedPointCheck()
|
||
this.jumpRed:SetActive(false)
|
||
this.closeRed:SetActive(false)
|
||
if this.openType == 2 then
|
||
local numInBag = BagManager.GetTotalItemNum(itemSid)
|
||
local redPointData = GemManager.GetGemsFromBagByType(gemConfig[itemSid].Type)
|
||
for key, value in pairs(redPointData) do--红点检测更换
|
||
if value.id > itemSid then
|
||
this.closeRed:SetActive(true)
|
||
break
|
||
end
|
||
end
|
||
for key, value in pairs(redPointData) do--红点检测合成
|
||
if numInBag + 1 >= gemConfig[itemSid].UpgradeNum and gemConfig[itemSid].NextGem > 0 then
|
||
this.jumpRed:SetActive(true)
|
||
break
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function this.SetGemProperty()
|
||
local data = itemData.pro
|
||
for key, value in pairs(this.proList) do
|
||
value:SetActive(false)
|
||
end
|
||
for i = 1, #data do
|
||
local go = this.proList[i]
|
||
if not go then
|
||
go = newObjToParent(this.proPre,this.proGrid)
|
||
this.proList[i] = go
|
||
end
|
||
go:SetActive(true)
|
||
local str=""
|
||
local add=""
|
||
if data[i][2]==itemData.config.MaxProperty then
|
||
add=string.format(" <color=#529764FF>%s</color>","(Max)")
|
||
else
|
||
add=string.format(" <color=#529764FF>%s</color>","("..string.format("%.2f",data[i][2]/itemData.config.MaxProperty*100).."%)")
|
||
end
|
||
if PropertyConfig[data[i][1]].Style==1 then
|
||
str=string.format( "%s+%s",PropertyConfig[data[i][1]].Info,data[i][2])
|
||
elseif PropertyConfig[data[i][1]].Style==2 then
|
||
LogError("data[i][2]=============="..data[i][2])
|
||
str=string.format( "%s+%s",PropertyConfig[data[i][1]].Info,data[i][2]/100).."%"
|
||
end
|
||
go:GetComponent("Text").text = str..add
|
||
end
|
||
end
|
||
|
||
--获取道具种类
|
||
function this.getType()
|
||
local type = itemConfig[itemSid].ItemBaseType
|
||
if type == 1 then
|
||
return Language[11089]..Language[11517]
|
||
elseif type == 2 then
|
||
return Language[11089]..Language[10201]
|
||
elseif type == 4 then
|
||
return Language[11089]..Language[11518]
|
||
elseif type == 5 then
|
||
return Language[11089]..Language[11519]
|
||
elseif type == 6 then
|
||
return Language[11089]..Language[11520]
|
||
elseif type == 7 then
|
||
return Language[11089]..Language[11521]
|
||
end
|
||
end
|
||
|
||
--界面关闭时调用(用于子类重写)
|
||
function RewardGemSingleShowPopup:OnClose()
|
||
if this.jumpViewList and #this.jumpViewList > 0 then
|
||
for i = 1,#this.jumpViewList do
|
||
SubUIManager.Close(this.jumpViewList[i])
|
||
end
|
||
end
|
||
this.jumpViewList = {}
|
||
end
|
||
|
||
--界面销毁时调用(用于子类重写)
|
||
function RewardGemSingleShowPopup:OnDestroy()
|
||
SubUIManager.Close(this.itemView)
|
||
if this.jumpViewList and #this.jumpViewList > 0 then
|
||
for i = 1,#this.jumpViewList do
|
||
SubUIManager.Close(this.jumpViewList[i])
|
||
end
|
||
end
|
||
this.jumpViewList = {}
|
||
this.proList = {}
|
||
this.gemType = nil
|
||
this.position = nil
|
||
this.spLoader:Destroy()
|
||
|
||
end
|
||
function this.WarPowerChange(oldPowerNum,type)
|
||
-- 设置脏数据
|
||
HeroPropManager.SetFuncPropDirty(Func_Prop_Type.PlayerExtra)
|
||
--
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.Bag.OnBagShowWarPowerChange,oldPowerNum,type)
|
||
local newPowerNum = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
|
||
if oldPowerNum ~= newPowerNum then
|
||
UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,{oldValue = oldPowerNum,newValue = newPowerNum})
|
||
end
|
||
end
|
||
return RewardGemSingleShowPopup |