Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,356 @@
|
||||
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
|
||||
Reference in New Issue
Block a user