5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
357 lines
12 KiB
Lua
357 lines
12 KiB
Lua
local InfinityTowerBounty = class("InfinityTowerBounty", BaseCtrl)
|
|
InfinityTowerBounty._mapNodeConfig = {
|
|
goBounty = {
|
|
sNodeName = "t_window_04"
|
|
},
|
|
txt_BV_Title = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Bounty_Level"
|
|
},
|
|
btnLevel = {
|
|
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl"
|
|
},
|
|
btnPreview = {
|
|
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl"
|
|
},
|
|
btnLevelTog = {
|
|
sNodeName = "btnLevel",
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_LevelTog"
|
|
},
|
|
btnPreviewTog = {
|
|
sNodeName = "btnPreview",
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_PreviewTog"
|
|
},
|
|
bv_obj_Bounty = {},
|
|
bv_tex_currentLv = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Current_Level"
|
|
},
|
|
bv_tex_BountyLv = {sComponentName = "TMP_Text"},
|
|
bv_tex_promotion = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Promotion_Conditions"
|
|
},
|
|
pr_CondList = {sNodeName = "pr_Cond", nCount = 3},
|
|
bv_PromotionRewardTop = {},
|
|
tex_PromotionRewardTop = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Bounty_TopGrade"
|
|
},
|
|
bv_tex_daily = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Daily_Bounty"
|
|
},
|
|
bv_objRewardItem = {},
|
|
bv_rewardItemRoot = {sComponentName = "Transform"},
|
|
bv_tex_RewardNone = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Get_RewardNone"
|
|
},
|
|
btnGetDaily = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_GetDaily"
|
|
},
|
|
bv_txt_GetReward = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Get_Reward"
|
|
},
|
|
btnGetDailyGray = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_GetDaily"
|
|
},
|
|
bv_txt_GetRewardGray = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "LoginReward_Received"
|
|
},
|
|
bv_obj_Preview = {},
|
|
bv_tex_PreviewLv = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Bounty_Level"
|
|
},
|
|
bv_tex_PreviewDaily = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Daily_Bounty"
|
|
},
|
|
bv_tex_PreviewConditions = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Promotion_Conditions"
|
|
},
|
|
previewList = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
btnCloseBV = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Close"
|
|
},
|
|
MaskClose = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Close"
|
|
}
|
|
}
|
|
InfinityTowerBounty._mapEventConfig = {
|
|
InfinityTower_DailyCallback = "OnEvent_InfinityTowerDailyCallback"
|
|
}
|
|
function InfinityTowerBounty:Awake()
|
|
self.goAni = self.gameObject:GetComponent("Animator")
|
|
self.rewardItem = {}
|
|
self.previewRewardItem = {}
|
|
self.isOpen = false
|
|
end
|
|
function InfinityTowerBounty:OnEnable()
|
|
self:SetPageBtnText()
|
|
end
|
|
function InfinityTowerBounty:SetPageBtnText()
|
|
self._mapNode.btnLevel:SetText(ConfigTable.GetUIText("InfinityTower_Bounty_Level"))
|
|
self._mapNode.btnPreview:SetText(ConfigTable.GetUIText("InfinityTower_Bounty_Preview"))
|
|
end
|
|
function InfinityTowerBounty:InitView()
|
|
self.isOpen = true
|
|
self._mapNode.goBounty.gameObject:SetActive(false)
|
|
self.gameObject:SetActive(true)
|
|
self.bountycount = 0
|
|
self.tabBountyData = {}
|
|
local foreach_Base = function(baseData)
|
|
self.bountycount = self.bountycount + 1
|
|
self.tabBountyData[baseData.Level] = baseData
|
|
end
|
|
ForEachTableLine(DataTable.InfinityTowerBountyLevel, foreach_Base)
|
|
self:InitBountyMsg()
|
|
self:InitPreviewMsg()
|
|
local wait = function()
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
self._mapNode.goBounty.gameObject:SetActive(true)
|
|
self:OnBtnClick_LevelTog()
|
|
end
|
|
cs_coroutine.start(wait)
|
|
end
|
|
function InfinityTowerBounty:OnEvent_InfinityTowerDailyCallback()
|
|
if self.isOpen then
|
|
self:InitBountyMsg()
|
|
end
|
|
end
|
|
function InfinityTowerBounty:InitBountyMsg()
|
|
local currentLv = PlayerData.InfinityTower.BountyLevel
|
|
NovaAPI.SetTMPText(self._mapNode.bv_tex_BountyLv, tostring(currentLv))
|
|
local nextData = self.tabBountyData[currentLv + 1]
|
|
for i = 1, 3 do
|
|
self:InitConditionsList(self._mapNode.pr_CondList[i], i, nextData)
|
|
end
|
|
self._mapNode.bv_PromotionRewardTop:SetActive(nextData == nil)
|
|
local curData = self.tabBountyData[currentLv]
|
|
local tbItem = {}
|
|
local _base = decodeJson(curData.RewardShow)
|
|
for k, v in ipairs(_base) do
|
|
table.insert(tbItem, {
|
|
id = v[1],
|
|
count = v[2]
|
|
})
|
|
end
|
|
local isGet = not PlayerData.InfinityTower.isHaveDailyReward
|
|
self:SetRewardItem(tbItem, isGet)
|
|
self._mapNode.bv_tex_RewardNone.gameObject:SetActive(#tbItem == 0)
|
|
if #tbItem == 0 then
|
|
self._mapNode.btnGetDaily.gameObject:SetActive(false)
|
|
self._mapNode.btnGetDailyGray.gameObject:SetActive(true)
|
|
NovaAPI.SetTMPText(self._mapNode.bv_txt_GetRewardGray, ConfigTable.GetUIText("InfinityTower_Get_Reward"))
|
|
else
|
|
self._mapNode.btnGetDaily.gameObject:SetActive(PlayerData.InfinityTower.isHaveDailyReward)
|
|
self._mapNode.btnGetDailyGray.gameObject:SetActive(not PlayerData.InfinityTower.isHaveDailyReward)
|
|
NovaAPI.SetTMPText(self._mapNode.bv_txt_GetRewardGray, ConfigTable.GetUIText("LoginReward_Received"))
|
|
end
|
|
end
|
|
function InfinityTowerBounty:InitConditionsList(goGrid, index, data)
|
|
if data == nil then
|
|
goGrid:SetActive(false)
|
|
return
|
|
end
|
|
local _cond = data["Cond" .. index]
|
|
if _cond ~= 0 then
|
|
local bv_obj_Conditions_1 = goGrid.transform:Find("bv_obj_Conditions_1").gameObject
|
|
local bv_obj_Conditions_2 = goGrid.transform:Find("bv_obj_Conditions_2").gameObject
|
|
local bv_tex_Conditions = goGrid.gameObject:GetComponent("TMP_Text")
|
|
NovaAPI.SetTMPText(bv_tex_Conditions, data["CondDesc" .. index])
|
|
local isPass = PlayerData.InfinityTower:JudgeInfinityTowerCond(_cond, data["CondParam" .. index])
|
|
bv_obj_Conditions_1:SetActive(isPass)
|
|
bv_obj_Conditions_2:SetActive(not isPass)
|
|
goGrid:SetActive(true)
|
|
else
|
|
goGrid:SetActive(false)
|
|
end
|
|
end
|
|
function InfinityTowerBounty:SetRewardItem(tabItem, isGet)
|
|
local childCount = self._mapNode.bv_rewardItemRoot.childCount
|
|
for i = 1, childCount do
|
|
self._mapNode.bv_rewardItemRoot:GetChild(i - 1).gameObject:SetActive(false)
|
|
end
|
|
local index = 1
|
|
for i, v in pairs(tabItem) do
|
|
local objItem
|
|
if index > self._mapNode.bv_rewardItemRoot.childCount then
|
|
objItem = instantiate(self._mapNode.bv_objRewardItem, self._mapNode.bv_rewardItemRoot)
|
|
else
|
|
objItem = self._mapNode.bv_rewardItemRoot:GetChild(index - 1).gameObject
|
|
end
|
|
local btn = objItem:GetComponent("UIButton")
|
|
btn.onClick:RemoveAllListeners()
|
|
local clickCb = function()
|
|
self:ShowItemTips(v.id, btn.gameObject)
|
|
end
|
|
btn.onClick:AddListener(clickCb)
|
|
objItem:SetActive(true)
|
|
self.rewardItem[objItem] = self:BindCtrlByNode(objItem, "Game.UI.TemplateEx.TemplateItemCtrl")
|
|
self.rewardItem[objItem]:SetItem(v.id, nil, v.count, nil, isGet, nil, nil, true)
|
|
index = index + 1
|
|
end
|
|
end
|
|
function InfinityTowerBounty:InitPreviewMsg()
|
|
self._mapNode.previewList:Init(self.bountycount, self, self.InitPreviewList)
|
|
end
|
|
function InfinityTowerBounty:InitPreviewList(goGrid, gridIndex)
|
|
local index = gridIndex + 1
|
|
local tex_PreviewCond_Lv = goGrid.transform:Find("gridRt/tex_PreviewCond_Lv"):GetComponent("TMP_Text")
|
|
local obj_PCond_RewardItem = goGrid.transform:Find("gridRt/obj_PCond_RewardItem").gameObject
|
|
local obj_PCond_RewardRoot = goGrid.transform:Find("gridRt/obj_PCond_Reward/Viewport/obj_PCond_RewardRoot").transform
|
|
local obj_PCond_CondItem = goGrid.transform:Find("gridRt/obj_PCond_CondItem").gameObject
|
|
local obj_PCond_CondRoot = goGrid.transform:Find("gridRt/obj_PCond_CondRoot").transform
|
|
local obj_PCond_CurrentLv = goGrid.transform:Find("gridRt/obj_PCond_CurrentLv").gameObject
|
|
local tex_PCond_CurrentLv = goGrid.transform:Find("gridRt/obj_PCond_CurrentLv/tex_PCond_CurrentLv"):GetComponent("TMP_Text")
|
|
local tex_PCond_RewardNone = goGrid.transform:Find("gridRt/tex_PCond_RewardNone"):GetComponent("TMP_Text")
|
|
local obj_PCond_CondTop = goGrid.transform:Find("gridRt/obj_PCond_CondTop").gameObject
|
|
local tex_PCond_CondTop = goGrid.transform:Find("gridRt/obj_PCond_CondTop/tex_PCond_CondTop"):GetComponent("TMP_Text")
|
|
NovaAPI.SetTMPText(tex_PCond_RewardNone, ConfigTable.GetUIText("InfinityTower_Get_RewardNone"))
|
|
NovaAPI.SetTMPText(tex_PCond_CondTop, ConfigTable.GetUIText("InfinityTower_Bounty_TopGrade"))
|
|
NovaAPI.SetTMPText(tex_PCond_CurrentLv, ConfigTable.GetUIText("InfinityTower_Current_Level"))
|
|
local childItemCount = obj_PCond_RewardRoot.childCount
|
|
for i = 1, childItemCount do
|
|
obj_PCond_RewardRoot:GetChild(i - 1).gameObject:SetActive(false)
|
|
end
|
|
local childCondCount = obj_PCond_CondRoot.childCount
|
|
for i = 1, childCondCount do
|
|
obj_PCond_CondRoot:GetChild(i - 1).gameObject:SetActive(false)
|
|
end
|
|
if self.previewRewardItem[index] ~= nil then
|
|
for go, ctrl in ipairs(self.previewRewardItem[index]) do
|
|
self:UnbindCtrlByNode(ctrl)
|
|
end
|
|
end
|
|
self.previewRewardItem[index] = {}
|
|
NovaAPI.SetTMPText(tex_PreviewCond_Lv, index)
|
|
obj_PCond_CurrentLv:SetActive(PlayerData.InfinityTower.BountyLevel == index)
|
|
local bountyData = self.tabBountyData[index]
|
|
local tabItem = {}
|
|
local _base = decodeJson(bountyData.RewardShow)
|
|
for k, v in ipairs(_base) do
|
|
table.insert(tabItem, {
|
|
id = v[1],
|
|
count = v[2]
|
|
})
|
|
end
|
|
local indexCount = 1
|
|
for i, v in pairs(tabItem) do
|
|
local objItem
|
|
if indexCount > obj_PCond_RewardRoot.childCount then
|
|
objItem = instantiate(obj_PCond_RewardItem, obj_PCond_RewardRoot)
|
|
else
|
|
objItem = obj_PCond_RewardRoot:GetChild(indexCount - 1).gameObject
|
|
end
|
|
local btn = objItem:GetComponent("UIButton")
|
|
btn.onClick:RemoveAllListeners()
|
|
local clickCb = function()
|
|
self:ShowItemTips(v.id, btn.gameObject)
|
|
end
|
|
btn.onClick:AddListener(clickCb)
|
|
objItem:SetActive(true)
|
|
local _objR = objItem.transform:Find("AniRoot/_PCond_RewardItem").gameObject
|
|
self.previewRewardItem[index][_objR] = self:BindCtrlByNode(_objR, "Game.UI.TemplateEx.TemplateItemCtrl")
|
|
self.previewRewardItem[index][_objR]:SetItem(v.id, nil, v.count, nil, false, nil, nil, true)
|
|
indexCount = indexCount + 1
|
|
end
|
|
tex_PCond_RewardNone.gameObject:SetActive(#tabItem == 0)
|
|
local bountyDataNext = self.tabBountyData[index + 1]
|
|
if bountyDataNext ~= nil then
|
|
obj_PCond_CondTop:SetActive(false)
|
|
for i = 1, 3 do
|
|
local objItem
|
|
if i > obj_PCond_CondRoot.childCount then
|
|
objItem = instantiate(obj_PCond_CondItem, obj_PCond_CondRoot)
|
|
else
|
|
objItem = obj_PCond_CondRoot:GetChild(i - 1).gameObject
|
|
end
|
|
local _cond = bountyDataNext["Cond" .. i]
|
|
if _cond ~= 0 then
|
|
local tex = objItem.transform:Find("tex_PCond_CondItem"):GetComponent("TMP_Text")
|
|
NovaAPI.SetTMPText(tex, bountyDataNext["CondDesc" .. i])
|
|
objItem:SetActive(true)
|
|
else
|
|
objItem:SetActive(false)
|
|
end
|
|
end
|
|
else
|
|
obj_PCond_CondTop:SetActive(true)
|
|
end
|
|
end
|
|
function InfinityTowerBounty:ShowItemTips(nTid, rtBtn)
|
|
UTILS.ClickItemGridWithTips(nTid, rtBtn, false, true, false)
|
|
end
|
|
function InfinityTowerBounty:OnBtnClick_LevelTog()
|
|
self._mapNode.bv_obj_Bounty:SetActive(true)
|
|
self._mapNode.bv_obj_Preview:SetActive(false)
|
|
self.nSelectType = 1
|
|
self:SetTogSelect()
|
|
self.goAni:Play("goBountyView_Bounty")
|
|
end
|
|
function InfinityTowerBounty:OnBtnClick_PreviewTog()
|
|
self._mapNode.bv_obj_Bounty:SetActive(false)
|
|
self._mapNode.bv_obj_Preview:SetActive(true)
|
|
local currentLv = PlayerData.InfinityTower.BountyLevel
|
|
self._mapNode.previewList:SetScrollGridPos(currentLv, 0.1, 0)
|
|
self.nSelectType = 2
|
|
self:SetTogSelect()
|
|
self.goAni:Play("goBountyView_Preview")
|
|
end
|
|
function InfinityTowerBounty:SetTogSelect()
|
|
self._mapNode.btnLevel:SetDefault(self.nSelectType == 1)
|
|
self._mapNode.btnPreview:SetDefault(self.nSelectType == 2)
|
|
end
|
|
function InfinityTowerBounty:OnBtnClick_GetDaily()
|
|
if not PlayerData.InfinityTower.isHaveDailyReward then
|
|
local currentLv = PlayerData.InfinityTower.BountyLevel
|
|
local curData = self.tabBountyData[currentLv]
|
|
local tbItem = {}
|
|
local _base = decodeJson(curData.RewardShow)
|
|
for k, v in ipairs(_base) do
|
|
table.insert(tbItem, {
|
|
id = v[1],
|
|
count = v[2]
|
|
})
|
|
end
|
|
if 0 < #tbItem then
|
|
local strTips = ConfigTable.GetUIText("InfinityTower_Get_RewardTips")
|
|
EventManager.Hit(EventId.OpenMessageBox, strTips)
|
|
else
|
|
local strTips = ConfigTable.GetUIText("InfinityTower_Get_RewardNone")
|
|
EventManager.Hit(EventId.OpenMessageBox, strTips)
|
|
end
|
|
return
|
|
end
|
|
PlayerData.InfinityTower:ITDailyRewardReq()
|
|
end
|
|
function InfinityTowerBounty:OnBtnClick_Close()
|
|
self.isOpen = false
|
|
self._mapNode.goBounty.gameObject:SetActive(false)
|
|
self.gameObject:SetActive(false)
|
|
end
|
|
function InfinityTowerBounty:UnbindAllGrids()
|
|
for go, ctrl in ipairs(self.rewardItem) do
|
|
self:UnbindCtrlByNode(ctrl)
|
|
end
|
|
self.rewardItem = {}
|
|
end
|
|
function InfinityTowerBounty:OnDisable()
|
|
self:UnbindAllGrids()
|
|
end
|
|
return InfinityTowerBounty
|