e0549005e1
EN: 1.9.0.103 CN: 1.9.0.104 JP: 1.9.0.106 KR: 1.9.0.108
234 lines
8.1 KiB
Lua
234 lines
8.1 KiB
Lua
local BattlePassBuyLevelCtrl = class("BattlePassBuyLevelCtrl", BaseCtrl)
|
|
BattlePassBuyLevelCtrl._mapNodeConfig = {
|
|
TMPHintLevelBuy = {sComponentName = "TMP_Text"},
|
|
TMP_costCount = {sComponentName = "TMP_Text"},
|
|
TMPBuyLevel = {sComponentName = "TMP_Text"},
|
|
TMPLevelTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "BattlePassLevelBuyTitle"
|
|
},
|
|
goQuantitySelector = {
|
|
sNodeName = "tc_quantity_selector",
|
|
sCtrlName = "Game.UI.TemplateEx.TemplateQuantitySelectorCtrl"
|
|
},
|
|
imgCostIcon = {sComponentName = "Image"},
|
|
srItemList = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
btnConfirm1 = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Buy"
|
|
},
|
|
btnCancel = {sComponentName = "UIButton", callback = "ClosePanel"},
|
|
btnClose = {sComponentName = "UIButton", callback = "ClosePanel"},
|
|
BtnCloseScreen = {sComponentName = "UIButton", callback = "ClosePanel"},
|
|
txtTitleBuyLevel2 = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "BattlePassLevelBuy"
|
|
},
|
|
txtStock = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "BattlePassLevelBuy"
|
|
},
|
|
TMP_costTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "BattlePassLevelBuyCost"
|
|
},
|
|
txtBtnConfirm = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "BattlePassLevelBuyConfirm"
|
|
},
|
|
txtBtnCancel = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "BattlePassLevelBuyCancel"
|
|
},
|
|
AnimRoot = {
|
|
sNodeName = "t_window_04",
|
|
sComponentName = "Animator"
|
|
}
|
|
}
|
|
BattlePassBuyLevelCtrl._mapEventConfig = {}
|
|
BattlePassBuyLevelCtrl._mapRedDotConfig = {}
|
|
function BattlePassBuyLevelCtrl:Awake()
|
|
self._mapGridCtrl = {}
|
|
self.upgradeCostId = ConfigTable.GetData("BattlePassLevel", 1).Tid
|
|
self:SetSprite_Coin(self._mapNode.imgCostIcon, self.upgradeCostId)
|
|
end
|
|
function BattlePassBuyLevelCtrl:FadeIn()
|
|
end
|
|
function BattlePassBuyLevelCtrl:FadeOut()
|
|
end
|
|
function BattlePassBuyLevelCtrl:OnEnable()
|
|
self.gameObject:SetActive(false)
|
|
end
|
|
function BattlePassBuyLevelCtrl:OnDisable()
|
|
self:UnbindAllCtrl()
|
|
end
|
|
function BattlePassBuyLevelCtrl:OnDestroy()
|
|
end
|
|
function BattlePassBuyLevelCtrl:OnRelease()
|
|
end
|
|
function BattlePassBuyLevelCtrl:UnbindAllCtrl()
|
|
for _, mapCtrl in pairs(self._mapGridCtrl) do
|
|
self:UnbindCtrlByNode(mapCtrl)
|
|
end
|
|
self._mapGridCtrl = {}
|
|
end
|
|
function BattlePassBuyLevelCtrl:ClosePanel()
|
|
local waitCallback = function()
|
|
self:UnbindAllCtrl()
|
|
self.gameObject:SetActive(false)
|
|
end
|
|
self._mapNode.AnimRoot:Play("t_window_04_t_out")
|
|
self:AddTimer(1, 0.2, waitCallback, true, true, true, nil)
|
|
end
|
|
function BattlePassBuyLevelCtrl:ShowPanel(nCurLevel, tbReward, nSeasonId, bPremium)
|
|
self.gameObject:SetActive(true)
|
|
self._mapNode.TMPHintLevelBuy.gameObject:SetActive(false)
|
|
self._mapNode.srItemList.gameObject:SetActive(false)
|
|
self.curAddLevel = 1
|
|
self.curCost = 0
|
|
self.tbReward = tbReward
|
|
self.curLevel = nCurLevel
|
|
self.bPremium = bPremium
|
|
self.rewards = {}
|
|
self._mapNode.srItemList:SetAnim(0.08)
|
|
self:RefreshAddCount()
|
|
local callback = function(nCount)
|
|
self.curAddLevel = nCount
|
|
self:RefreshAddCount()
|
|
end
|
|
local nMaxLevel = #self.tbReward
|
|
self._mapNode.goQuantitySelector:Init(callback, 1, nMaxLevel - nCurLevel)
|
|
self._mapNode.AnimRoot:Play("t_window_04_t_in")
|
|
end
|
|
function BattlePassBuyLevelCtrl:OnGridRefresh(goGrid, gridIndex)
|
|
if self._mapGridCtrl[goGrid] == nil then
|
|
local mapCtrl = self:BindCtrlByNode(goGrid, "Game.UI.BattlePass.BattlePassBuyLevelItemGridCtrl")
|
|
self._mapGridCtrl[goGrid] = mapCtrl
|
|
end
|
|
local nIdx = gridIndex
|
|
if nIdx == nil then
|
|
return
|
|
end
|
|
nIdx = nIdx + 1
|
|
self._mapGridCtrl[goGrid]:Refresh(self.rewards[nIdx][1], self.rewards[nIdx][2])
|
|
end
|
|
function BattlePassBuyLevelCtrl:RefreshAddCount()
|
|
local mapReward = {}
|
|
self.curCost = 0
|
|
for i = self.curLevel + 1, self.curLevel + self.curAddLevel do
|
|
local mapRewardData = self.tbReward[i]
|
|
if mapRewardData ~= nil then
|
|
local mapLevel = ConfigTable.GetData("BattlePassLevel", i)
|
|
if mapLevel == nil then
|
|
return
|
|
end
|
|
self.curCost = self.curCost + mapLevel.Qty
|
|
if 0 < mapRewardData.nNormalTid then
|
|
if mapReward[mapRewardData.nNormalTid] == nil then
|
|
mapReward[mapRewardData.nNormalTid] = 0
|
|
end
|
|
mapReward[mapRewardData.nNormalTid] = mapReward[mapRewardData.nNormalTid] + mapRewardData.nNormalQty
|
|
end
|
|
if self.bPremium then
|
|
if 0 < mapRewardData.nVipTid1 then
|
|
if mapReward[mapRewardData.nVipTid1] == nil then
|
|
mapReward[mapRewardData.nVipTid1] = 0
|
|
end
|
|
mapReward[mapRewardData.nVipTid1] = mapReward[mapRewardData.nVipTid1] + mapRewardData.nVipQty1
|
|
end
|
|
if 0 < mapRewardData.nVipTid2 then
|
|
if mapReward[mapRewardData.nVipTid2] == nil then
|
|
mapReward[mapRewardData.nVipTid2] = 0
|
|
end
|
|
mapReward[mapRewardData.nVipTid2] = mapReward[mapRewardData.nVipTid2] + mapRewardData.nVipQty2
|
|
end
|
|
end
|
|
end
|
|
end
|
|
NovaAPI.SetTMPText(self._mapNode.TMP_costCount, self.curCost)
|
|
local nDefaultCount = PlayerData.Item:GetItemCountByID(self.upgradeCostId)
|
|
if nDefaultCount < self.curCost then
|
|
NovaAPI.SetTMPColor(self._mapNode.TMP_costCount, Red_Unable)
|
|
else
|
|
NovaAPI.SetTMPColor(self._mapNode.TMP_costCount, Blue_Normal)
|
|
end
|
|
self.rewards = {}
|
|
for nTid, nCount in pairs(mapReward) do
|
|
table.insert(self.rewards, {nTid, nCount})
|
|
end
|
|
if 0 < #self.rewards then
|
|
self._mapNode.srItemList.gameObject:SetActive(true)
|
|
self._mapNode.srItemList:Init(#self.rewards, self, self.OnGridRefresh, nil, true, nil)
|
|
self._mapNode.TMPHintLevelBuy.gameObject:SetActive(true)
|
|
NovaAPI.SetTMPText(self._mapNode.TMPHintLevelBuy, orderedFormat(ConfigTable.GetUIText("BattlePassLevelBuyInfo") or "", self.curLevel + self.curAddLevel))
|
|
NovaAPI.SetTMPText(self._mapNode.TMPBuyLevel, self.curAddLevel)
|
|
else
|
|
self._mapNode.TMPHintLevelBuy.gameObject:SetActive(false)
|
|
self._mapNode.srItemList.gameObject:SetActive(false)
|
|
end
|
|
end
|
|
function BattlePassBuyLevelCtrl:OnBtnClick_Buy()
|
|
self:BuyOrExchangeCoin()
|
|
end
|
|
function BattlePassBuyLevelCtrl:BuyOrExchangeCoin()
|
|
local ConfirmPanel = function(sTip, confirmCallback)
|
|
local msg = {
|
|
nType = AllEnum.MessageBox.Confirm,
|
|
sContent = sTip,
|
|
callbackConfirm = confirmCallback,
|
|
callbackCancel = nil,
|
|
bBlur = false
|
|
}
|
|
EventManager.Hit(EventId.OpenMessageBox, msg)
|
|
end
|
|
local mapCostCfgData = ConfigTable.GetData_Item(AllEnum.CoinItemId.STONE)
|
|
local mapJadeCfgData = ConfigTable.GetData_Item(AllEnum.CoinItemId.Jade)
|
|
if mapJadeCfgData == nil then
|
|
return
|
|
end
|
|
if mapCostCfgData == nil then
|
|
return
|
|
end
|
|
local BuyCallback = function(mapData)
|
|
self:ClosePanel()
|
|
end
|
|
local nDefaultCount = PlayerData.Item:GetItemCountByID(self.upgradeCostId)
|
|
if nDefaultCount >= self.curCost then
|
|
local confirmCallback = function()
|
|
PlayerData.BattlePass:NetMsg_BuyBattlePassLevel(self.curAddLevel, BuyCallback)
|
|
end
|
|
local sTips = orderedFormat(ConfigTable.GetUIText("Shop_BuyComfirm") or "", self.curCost, mapJadeCfgData.Title, ConfigTable.GetUIText("BattlePassLevelTitle"))
|
|
ConfirmPanel(sTips, confirmCallback)
|
|
elseif self.upgradeCostId == AllEnum.CoinItemId.Jade then
|
|
local nNeedCount = self.curCost - nDefaultCount
|
|
local sTips1 = orderedFormat(ConfigTable.GetUIText("Recruit_ExchangeGemZero") or "", mapJadeCfgData.Id, nNeedCount, mapCostCfgData.Id)
|
|
local confirmCallbackStone = function()
|
|
local nCurStoneCount = PlayerData.Item:GetItemCountByID(AllEnum.CoinItemId.STONE)
|
|
nCurStoneCount = nCurStoneCount + PlayerData.Item:GetItemCountByID(AllEnum.CoinItemId.FREESTONE)
|
|
if nCurStoneCount >= nNeedCount then
|
|
local convertCallback = function()
|
|
local nDefaultCountAfter = PlayerData.Item:GetItemCountByID(self.upgradeCostId)
|
|
if nDefaultCountAfter < self.curCost then
|
|
NovaAPI.SetTMPColor(self._mapNode.TMP_costCount, Red_Unable)
|
|
else
|
|
NovaAPI.SetTMPColor(self._mapNode.TMP_costCount, Blue_Normal)
|
|
end
|
|
end
|
|
PlayerData.Coin:SendGemConvertReqReq(nNeedCount, convertCallback)
|
|
else
|
|
local sTips2 = orderedFormat(ConfigTable.GetUIText("Recruit_Charge") or "", mapCostCfgData.Id)
|
|
local confirmCallbackExchange = function()
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.Mall, AllEnum.MallToggle.Gem)
|
|
end
|
|
ConfirmPanel(sTips2, confirmCallbackExchange)
|
|
end
|
|
end
|
|
ConfirmPanel(sTips1, confirmCallbackStone)
|
|
else
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("NotEnoughItem"))
|
|
end
|
|
end
|
|
return BattlePassBuyLevelCtrl
|