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(" %s","(Max)")
else
add=string.format(" %s","("..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