423 lines
20 KiB
Lua
423 lines
20 KiB
Lua
require("Base/BasePanel")
|
||
RewardItemSingleShowPopup = Inherit(BasePanel)
|
||
local this = RewardItemSingleShowPopup
|
||
local JumpConfig = ConfigManager.GetConfig(ConfigName.JumpConfig)
|
||
local itemSid
|
||
local heroBackData
|
||
local itemConfigData
|
||
local itemNu = 0
|
||
local func
|
||
local armorType = 0
|
||
local lanTuData = {}
|
||
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
||
|
||
local isBagPanel = false
|
||
--初始化组件(用于子类重写)
|
||
function RewardItemSingleShowPopup:InitComponent()
|
||
|
||
this.itemName = Util.GetGameObject(self.transform, "bg/name"):GetComponent("Text")
|
||
this.BtnBack = Util.GetGameObject(self.transform, "bg/btnBack")
|
||
this.icon = Util.GetGameObject(self.transform, "bg/armorInfo/frame/icon"):GetComponent("Image")
|
||
this.frameMask = Util.GetGameObject(self.transform, "bg/armorInfo/frameMask")
|
||
this.frame = Util.GetGameObject(self.transform, "bg/armorInfo/frame")
|
||
this.pokemonFrame = Util.GetGameObject(self.transform, "bg/armorInfo/pokemonFrame")
|
||
this.starGameobject = Util.GetGameObject(self.transform, "bg/armorInfo/starGameobject")
|
||
this.pokemonImage = Util.GetGameObject(self.transform, "bg/armorInfo/pokemonFrame/pokemonImage"):GetComponent("Image")
|
||
this.armorType = Util.GetGameObject(self.transform, "bg/armorInfo/armorType"):GetComponent("Text")
|
||
this.armorLanTuNum = Util.GetGameObject(self.transform, "armorInfo/armorLanTuNum")
|
||
this.armorInfo = Util.GetGameObject(self.transform, "bg/armorInfo/armorInfo"):GetComponent("Text")
|
||
this.equipOtherProPre = Util.GetGameObject(self.transform, "getTuPre")
|
||
this.equipProGrid = Util.GetGameObject(self.transform, "bg/scroll/grid")
|
||
this.btnJump = Util.GetGameObject(self.transform, "bg/btnGrid/btnJump")
|
||
this.btnSure = Util.GetGameObject(self.transform, "bg/btnGrid/btnSure")
|
||
this.btnSureText = Util.GetGameObject(this.btnSure.transform, "Text"):GetComponent("Text")
|
||
this.equipQuaText = Util.GetGameObject(self.transform, "bg/armorInfo/equipQuaText"):GetComponent("Text")
|
||
this.innateImage=Util.GetGameObject(self.transform, "bg/armorInfo/innateImage")
|
||
this.fragmentIcon=Util.GetGameObject(self.transform, "bg/armorInfo/fragmentIcon")
|
||
this.innateText=Util.GetGameObject(self.transform, "bg/armorInfo/innateImage/Text"):GetComponent("Text")
|
||
end
|
||
|
||
--绑定事件(用于子类重写)
|
||
function RewardItemSingleShowPopup:BindEvent()
|
||
|
||
Util.AddClick(this.BtnBack, function()
|
||
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(this.btnSure, function()
|
||
if itemConfigData.ItemType == ItemType.HeroDebris then
|
||
local gameSetting = ConfigManager.GetConfigData(ConfigName.GameSetting, 1)
|
||
local endHeroNum=gameSetting.HeroNumlimit-LengthOfTable(HeroManager.GetAllHeroDatas())
|
||
local sum = BagManager.GetItemCountById(itemSid) / BagManager.bagDatas[itemSid].itemConfig.UsePerCount
|
||
if sum >= 2 then
|
||
local _itemData = BagManager.bagDatas[itemSid]
|
||
if endHeroNum > 0 then
|
||
UIManager.OpenPanel(UIName.BagResolveAnCompoundPanel, 3, _itemData, function()
|
||
func()
|
||
end)
|
||
else
|
||
PopupTipPanel.ShowTip(Language[12157])
|
||
end
|
||
elseif sum >= 1 and sum < 2 then
|
||
-- body
|
||
local compoundNum = 1
|
||
local _itemData = BagManager.bagDatas[itemSid]
|
||
local item={}
|
||
item.itemId= _itemData.id
|
||
item.itemNum=compoundNum*_itemData.itemConfig.UsePerCount
|
||
if endHeroNum > 0 then
|
||
NetManager.HeroComposeRequest(item,function (drop)
|
||
this.SendBackCompoundReCallBack(drop)
|
||
end)
|
||
if compoundNum<=0 then
|
||
PopupTipPanel.ShowTip(Language[10183])
|
||
end
|
||
else
|
||
PopupTipPanel.ShowTip(Language[12157])
|
||
end
|
||
else
|
||
PopupTipPanel.ShowTip(Language[11509])
|
||
end
|
||
elseif itemConfigData.ItemType == ItemType.Blueprint then
|
||
if lanTuData and lanTuData[1] == true then
|
||
local _itemData = BagManager.bagDatas[itemSid]
|
||
UIManager.OpenPanel(UIName.BagResolveAnCompoundPanel, 3, _itemData, function()
|
||
func()
|
||
end)
|
||
elseif lanTuData and lanTuData[1] == false and lanTuData[2] > 0 then
|
||
NetManager.GetWorkShopAvtiveLanTuRequest(lanTuData[2], 2, function()
|
||
--刷新工坊解锁蓝图数据
|
||
this.DeleteActiveLanTuData()
|
||
end)
|
||
end
|
||
elseif itemConfigData.ItemType == ItemType.Box then
|
||
local _itemData = BagManager.bagDatas[itemSid]
|
||
if itemConfig[itemSid].UseType ~= 2 then
|
||
UIManager.OpenPanel(UIName.BagResolveAnCompoundPanel, 4, _itemData, function()
|
||
func()
|
||
end)
|
||
end
|
||
elseif itemConfigData.ItemType == ItemType.ChangeName then
|
||
UIManager.OpenPanel(UIName.CreateNamePopup)
|
||
elseif itemConfigData.ItemType == ItemType.Skin then
|
||
local group = ConfigManager.GetConfigData(ConfigName.RewardGroup,tonumber(itemConfig[itemSid].ResolveReward)).ShowItem
|
||
MsgPanel.ShowTwo(string.format(Language[11510],group[1][2],GetLanguageStrById(itemConfig[group[1][1]].Name)),function()
|
||
end, function()
|
||
local curResolveAllItemList = {}
|
||
table.insert(curResolveAllItemList,{itemId = itemSid,itemNum = 1})
|
||
NetManager.UseAndPriceItemRequest(1,curResolveAllItemList,function (drop)
|
||
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1)
|
||
self:ClosePanel()
|
||
end)
|
||
end,Language[10731],Language[10732],Language[11511],false,"")
|
||
else
|
||
local _itemData = BagManager.bagDatas[itemSid]
|
||
UIManager.OpenPanel(UIName.BagResolveAnCompoundPanel, 3, _itemData, function()
|
||
func()
|
||
end)
|
||
end
|
||
end)
|
||
Util.AddClick(this.btnJump, function()
|
||
if itemConfigData.ItemType == ItemType.Skin then
|
||
local skinConfig = ConfigManager.GetConfigData(ConfigName.HeroSkin,itemSid)
|
||
local have,overtime = HeroSkinManager.IsExist(skinConfig.Type)
|
||
if have then
|
||
if overtime < 0 then
|
||
PopupTipPanel.ShowTip(Language[12169])
|
||
else
|
||
PopupTipPanel.ShowTip(Language[11512])
|
||
end
|
||
else
|
||
local curResolveAllItemList = {}
|
||
table.insert(curResolveAllItemList,{itemId = itemSid,itemNum = 1})
|
||
NetManager.UseAndPriceItemRequest(0,curResolveAllItemList,function (drop)
|
||
self:ClosePanel()
|
||
if HeroManager.GetCurHeroIsHaveBySid(skinConfig.HeroId) then
|
||
MsgPanel.ShowTwo(string.format(Language[11513],GetLanguageStrById(skinConfig.ReadingName)),function() end,function()
|
||
local herodata = HeroManager.GetHeroDataByHeroSIdAndMinSortIdAndSkinId(skinConfig.HeroId,skinConfig.Type)
|
||
--LogGreen("herodata.dynamicId:"..tostring(herodata.dynamicId))
|
||
UIManager.OpenPanel(UIName.RoleInfoPanel,herodata, HeroManager.GetAllHeroDatas(),true,5)
|
||
end,Language[10731],Language[10732],"",false,"")
|
||
else
|
||
PopupTipPanel.ShowTip(string.format(Language[11514],GetLanguageStrById(skinConfig.ReadingName)))
|
||
end
|
||
end)
|
||
end
|
||
elseif itemConfigData.ItemType == ItemType.HeadFrame then
|
||
HeadManager.GetCurFrameId()
|
||
local theFrameData = HeadManager.GetSingleFrame(itemSid)
|
||
if theFrameData then
|
||
MsgPanel.ShowTwo(Language[12170],nil,function()
|
||
NetManager.UseHeadFrameRequestFun(itemSid,function (msg)
|
||
HeadManager.SetSineleHeadFrameAllData(itemSid,msg.validTime)
|
||
self:ClosePanel()
|
||
PopupTipPanel.ShowTip(Language[12171])
|
||
end)
|
||
end)
|
||
else
|
||
NetManager.UseHeadFrameRequestFun(itemSid,function (msg)
|
||
HeadManager.SetSineleHeadFrameAllData(itemSid,msg.validTime)
|
||
self:ClosePanel()
|
||
PopupTipPanel.ShowTip(Language[12171])
|
||
end)
|
||
end
|
||
elseif itemConfigData.ItemType == ItemType.Ride then
|
||
local oldPowerNum = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
|
||
if PlayerManager.userMountList[itemConfigData.Id] then
|
||
MsgPanel.ShowTwo(Language[12254],nil,function()
|
||
NetManager.ActiveUserMountRequest(itemSid,function (msg)
|
||
PlayerManager.SetPlayerMountTime(itemSid,msg.validTime)
|
||
self:ClosePanel()
|
||
PopupTipPanel.ShowTip(Language[12255])
|
||
this.WarPowerChange(oldPowerNum,PowerChangeJumpType.ride)
|
||
end)
|
||
end)
|
||
else
|
||
NetManager.ActiveUserMountRequest(itemSid,function (msg)
|
||
PlayerManager.SetPlayerMountTime(itemSid,msg.validTime)
|
||
self:ClosePanel()
|
||
PopupTipPanel.ShowTip(Language[12255])
|
||
this.WarPowerChange(oldPowerNum,PowerChangeJumpType.ride)
|
||
end)
|
||
end
|
||
elseif itemConfigData.ItemType == ItemType.Title then
|
||
local oldPowerNum = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
|
||
if PlayerManager.userTitleList[itemConfigData.Id] then
|
||
MsgPanel.ShowTwo(Language[12307],nil,function()
|
||
NetManager.ActiveUserTitleRequest(itemSid,function (msg)
|
||
PlayerManager.SetPlayerTitleTime(itemSid,msg.validTime)
|
||
self:ClosePanel()
|
||
PopupTipPanel.ShowTip(Language[12308])
|
||
this.WarPowerChange(oldPowerNum,PowerChangeJumpType.title)
|
||
end)
|
||
end)
|
||
else
|
||
NetManager.ActiveUserTitleRequest(itemSid,function (msg)
|
||
PlayerManager.SetPlayerTitleTime(itemSid,msg.validTime)
|
||
self:ClosePanel()
|
||
PopupTipPanel.ShowTip(Language[12308])
|
||
this.WarPowerChange(oldPowerNum,PowerChangeJumpType.title)
|
||
end)
|
||
end
|
||
elseif itemConfigData then
|
||
JumpManager.GoJump(itemConfigData.UseJump,function ()
|
||
this:ClosePanel()
|
||
end)
|
||
end
|
||
end)
|
||
end
|
||
local callBackFun
|
||
function this.SendBackCompoundReCallBack(drop)
|
||
--this:ClosePanel()
|
||
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1,function ()
|
||
--UIManager.OpenPanel(UIName.BagPanel)
|
||
-- if callBackFun then
|
||
-- callBackFun()
|
||
func()
|
||
-- end
|
||
end,nil,nil,nil,true)
|
||
--改为后端刷新了
|
||
--BagManager.UpdateItemsNum(itemData.id,compoundNum*itemData.itemConfig.UsePerCount)
|
||
end
|
||
|
||
--扣除解锁蓝图材料 并数据
|
||
function this.DeleteActiveLanTuData()
|
||
PopupTipPanel.ShowTip(Language[11515] .. GetLanguageStrById(itemConfigData.Name))
|
||
if lanTuData and lanTuData[1] == false and lanTuData[2] > 0 then
|
||
WorkShopManager.UpdataWorkShopLanTuActiveState(2, lanTuData[2], itemConfigData.Id)--
|
||
end
|
||
if func then
|
||
func()
|
||
end
|
||
this:ClosePanel()
|
||
end
|
||
--添加事件监听(用于子类重写)
|
||
function RewardItemSingleShowPopup:AddListener()
|
||
|
||
end
|
||
|
||
--移除事件监听(用于子类重写)
|
||
function RewardItemSingleShowPopup:RemoveListener()
|
||
|
||
end
|
||
|
||
--界面打开时调用(用于子类重写)
|
||
function RewardItemSingleShowPopup:OnOpen(...)
|
||
isBagPanel = BagManager.isBagPanel
|
||
itemNu = 0
|
||
local data = { ... }
|
||
itemSid = data[1]
|
||
itemConfigData = ConfigManager.GetConfigData(ConfigName.ItemConfig, itemSid)
|
||
this.isRewardItemPop=data[3]
|
||
if data[2] then
|
||
func = data[2]
|
||
end
|
||
end
|
||
function RewardItemSingleShowPopup:OnShow()
|
||
this.innateImage:SetActive(false)
|
||
this.fragmentIcon:SetActive(false)
|
||
this.starGameobject:SetActive(false)
|
||
--判断自选宝箱界面是否开启
|
||
local isBoxOpen = UIManager.IsOpen(314)
|
||
if isBagPanel and isBoxOpen then
|
||
this.btnSure:SetActive(false)
|
||
elseif isBagPanel and itemConfigData.IfResolve == 1 and func then--是否可分解
|
||
this.btnSure:SetActive(true)
|
||
this.btnSureText.text = Language[10197]
|
||
elseif isBagPanel and itemConfigData.ItemType == 2 and func then--是否是碎片可合成
|
||
this.btnSureText.text = Language[10193]
|
||
this.btnSure:SetActive(true)
|
||
elseif isBagPanel and itemConfigData.ItemType == 10 and func then--是否宝箱可使用
|
||
this.btnSure:SetActive(true)
|
||
this.btnSureText.text = Language[10195]
|
||
elseif isBagPanel and itemConfigData.ItemType == 12 and func then-- 改名卡
|
||
this.btnSure:SetActive(true)
|
||
this.btnSureText.text = Language[10195]
|
||
else
|
||
this.btnSure:SetActive(false)
|
||
this.btnSureText.text = Language[10197]
|
||
end
|
||
this.btnJump:SetActive(itemConfigData.UseJump and itemConfigData.UseJump > 0 and isBagPanel)
|
||
Log("itemConfigData.Id " .. itemConfigData.Id)
|
||
this.equipQuaText.text = GetStringByEquipQua(itemConfigData.Quantity, GetQuaStringByEquipQua(itemConfigData.Quantity))
|
||
this.itemName.text = GetStringByEquipQua(itemConfigData.Quantity, GetLanguageStrById(itemConfigData.Name))
|
||
if itemConfigData.ItemType==4 then --妖魂
|
||
this.pokemonFrame:SetActive(true)
|
||
this.frame:SetActive(false)
|
||
this.pokemonFrame:GetComponent("Image").sprite = Util.LoadSprite(YaoHunFrame[itemConfigData.Quantity])
|
||
this.pokemonImage.sprite = Util.LoadSprite(GetResourcePath(itemConfigData.ResourceID))
|
||
else
|
||
this.frame:SetActive(true)
|
||
this.pokemonFrame:SetActive(false)
|
||
this.frame:GetComponent("Image").sprite = Util.LoadSprite(GetQuantityImageByquality(itemConfigData.Quantity))
|
||
this.icon.sprite = Util.LoadSprite(GetResourcePath(itemConfigData.ResourceID))
|
||
end
|
||
this.armorType.text = this.getType()--道具类型显示
|
||
this.armorLanTuNum:SetActive(true)
|
||
this.armorLanTuNum:GetComponent("Text").text = Language[11516] .. BagManager.GetItemCountById(itemSid)
|
||
this.armorInfo.text = string.gsub(GetLanguageStrById(itemConfigData.ItemDescribe), "\\n", "")
|
||
this.frameMask:SetActive(false)
|
||
if itemConfigData.ItemType == 2 or itemConfigData.ItemType == 22 then
|
||
this.frameMask:SetActive(true)
|
||
this.frameMask:GetComponent("Image").sprite = Util.LoadSprite(GetHeroChipQuantityImageByquality(itemConfigData.Quantity))
|
||
local propertyName=itemConfig[itemConfigData.Id].PropertyName
|
||
if(propertyName~=0) then
|
||
this.fragmentIcon:SetActive(true)
|
||
this.fragmentIcon:GetComponent("Image").sprite = Util.LoadSprite(GetProStrImageByProNum(propertyName))
|
||
end
|
||
end
|
||
if itemConfigData.ItemType == ItemType.heroDogFood then
|
||
local propertyName=itemConfigData.PropertyName
|
||
if(propertyName~=0) then
|
||
this.fragmentIcon:SetActive(true)
|
||
this.fragmentIcon:GetComponent("Image").sprite = Util.LoadSprite(GetProStrImageByProNum(propertyName))
|
||
end
|
||
this.starGameobject:SetActive(true)
|
||
local star = itemConfigData.HeroStar[1]
|
||
SetHeroStars(this.starGameobject, star,1,Vector2.New(32.5,32.5),-15)
|
||
end
|
||
if itemConfigData.ItemType == 9 then
|
||
if itemConfigData.RingLevel > 0 then
|
||
this.innateImage:SetActive(true)
|
||
this.innateText.text = "+" .. itemConfigData.RingLevel
|
||
else
|
||
this.innateImage:SetActive(false)
|
||
this.innateText.text = ""
|
||
end
|
||
end
|
||
|
||
--装备获得途径
|
||
Util.ClearChild(this.equipProGrid.transform)
|
||
if itemConfigData and itemConfigData.Jump then
|
||
if itemConfigData.Jump and #itemConfigData.Jump>0 then
|
||
local jumpSortData = {}
|
||
local isLevel = false
|
||
for i = 1, #itemConfigData.Jump do--为关卡跳转做的排序数据
|
||
local jumpData = {}
|
||
jumpData.id = itemConfigData.Jump[i]
|
||
jumpData.data = JumpConfig[itemConfigData.Jump[i]]
|
||
--jumpData.state = 0
|
||
--LogGreen("itemConfigData.Jump[i] "..itemConfigData.Jump[i])
|
||
if jumpData.data.Type == JumpType.Level then--关卡按钮特殊处理
|
||
isLevel = true
|
||
end
|
||
table.insert(jumpSortData,jumpData)
|
||
end
|
||
for i = 1, #jumpSortData do
|
||
if jumpSortData[i].id > 0 then
|
||
-- type 大于 10000为活动 直接显示按钮,如果小于1000 为功能 开启才显示
|
||
if JumpConfig[jumpSortData[i].id].Type >= 10000 or ActTimeCtrlManager.SingleFuncState(JumpConfig[jumpSortData[i].id].Type) then
|
||
-- if not ActTimeCtrlManager.SingleFuncState(JumpConfig[jumpSortData[i].id].Type) then break end
|
||
if not RECHARGEABLE then--(是否开启充值)
|
||
if this.isRewardItemPop == true or itemConfigData.Id == 61 or itemConfigData.Id == 19 or itemConfigData.ItemType == 17 then
|
||
SubUIManager.Open(SubUIConfig.JumpView, this.equipProGrid.transform, jumpSortData[i].id,false,self)
|
||
else
|
||
SubUIManager.Open(SubUIConfig.JumpView, this.equipProGrid.transform, jumpSortData[i].id,true,self)
|
||
end
|
||
else
|
||
if this.isRewardItemPop == true or itemConfigData.ItemType == 17 then
|
||
SubUIManager.Open(SubUIConfig.JumpView, this.equipProGrid.transform, jumpSortData[i].id,false,self)
|
||
else
|
||
SubUIManager.Open(SubUIConfig.JumpView, this.equipProGrid.transform, jumpSortData[i].id,true,self)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
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 this.JumpSort(jumps)
|
||
table.sort(jumps, function(a, b)
|
||
if a.state == b.state then
|
||
if a.state == 2 and b.state == 2 then
|
||
return a.data.SortId > b.data.SortId
|
||
end
|
||
else
|
||
return a.state > b.state
|
||
end
|
||
end)
|
||
end
|
||
--道具 和 装备分解 发送请求后 回调
|
||
function this.SendBackResolveReCallBack(drop, curResolveAllItemList)
|
||
UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1)
|
||
if func then
|
||
func()
|
||
end
|
||
this:ClosePanel()
|
||
end
|
||
--界面关闭时调用(用于子类重写)
|
||
function RewardItemSingleShowPopup:OnClose()
|
||
end
|
||
|
||
--界面销毁时调用(用于子类重写)
|
||
function RewardItemSingleShowPopup:OnDestroy()
|
||
|
||
end
|
||
function this.WarPowerChange(oldPowerNum,type)
|
||
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 RewardItemSingleShowPopup |