5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
328 lines
12 KiB
Lua
328 lines
12 KiB
Lua
local VampireLevelSelect_questCtrl = class("VampireLevelSelect_questCtrl", BaseCtrl)
|
|
VampireLevelSelect_questCtrl._mapNodeConfig = {
|
|
rtWindow = {
|
|
sComponentName = "CanvasGroup"
|
|
},
|
|
rtWeekly = {},
|
|
rtPass = {},
|
|
rtPassHard = {},
|
|
lsvWeekly = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
lsvPass = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
listPassHard = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
TMPScoreQuest = {sComponentName = "TMP_Text"},
|
|
TMPTitleQuest = {sComponentName = "TMP_Text"},
|
|
btnClose = {sComponentName = "UIButton", callback = "ClosePanel"},
|
|
aniWindow = {sNodeName = "rtWindow", sComponentName = "Animator"},
|
|
btnReceiveWeekly = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_ReceiveWeekly"
|
|
},
|
|
btnReceivePass = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_ReceivePass"
|
|
},
|
|
btnReceivePassHard = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_ReceivePassHard"
|
|
},
|
|
snapshot = {},
|
|
snapshotBtn = {
|
|
sNodeName = "snapshot",
|
|
sComponentName = "Button",
|
|
callback = "ClosePanel"
|
|
},
|
|
TMPReceiveTitle = {
|
|
nCount = 3,
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Quest_Fast_Receive_Btn_Text"
|
|
},
|
|
TMPScoreTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "VampireWeekScoreTitle"
|
|
},
|
|
TMPTogQuest = {sComponentName = "TMP_Text", nCount = 3},
|
|
TMPTogOpenQuest = {sComponentName = "TMP_Text", nCount = 3},
|
|
TMPRemainTimeQuest = {sComponentName = "TMP_Text"},
|
|
imgTogLockQuest = {nCount = 3},
|
|
imgTogOpenQuest = {nCount = 3},
|
|
btnTogBtnQuest = {
|
|
sComponentName = "UIButton",
|
|
nCount = 3,
|
|
callback = "OnBtnClick_Tog"
|
|
},
|
|
imgTimeBgQuest = {},
|
|
goRedDot1 = {},
|
|
goRedDot2 = {},
|
|
goRedDot3 = {}
|
|
}
|
|
VampireLevelSelect_questCtrl._mapEventConfig = {}
|
|
VampireLevelSelect_questCtrl._mapRedDotConfig = {
|
|
[RedDotDefine.VampireQuest_Normal] = {sNodeName = "goRedDot1"},
|
|
[RedDotDefine.VampireQuest_Hard] = {sNodeName = "goRedDot2"},
|
|
[RedDotDefine.VampireQuest_Season] = {sNodeName = "goRedDot3"}
|
|
}
|
|
function VampireLevelSelect_questCtrl:Awake()
|
|
self.tbCurQuest = {}
|
|
self.tbCurQuestSeason = {}
|
|
self.tbCurQuestHard = {}
|
|
self._mapGridCtrl = {}
|
|
self.tbLockTog = {}
|
|
end
|
|
function VampireLevelSelect_questCtrl:FadeIn()
|
|
end
|
|
function VampireLevelSelect_questCtrl:FadeOut()
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnEnable()
|
|
NovaAPI.SetTMPText(self._mapNode.TMPTogQuest[1], ConfigTable.GetUIText("Vampire_Hard1"))
|
|
NovaAPI.SetTMPText(self._mapNode.TMPTogQuest[2], ConfigTable.GetUIText("Vampire_Hard2"))
|
|
NovaAPI.SetTMPText(self._mapNode.TMPTogQuest[3], ConfigTable.GetUIText("Vampire_Hard3"))
|
|
NovaAPI.SetTMPText(self._mapNode.TMPTogOpenQuest[1], ConfigTable.GetUIText("Vampire_Hard1"))
|
|
NovaAPI.SetTMPText(self._mapNode.TMPTogOpenQuest[2], ConfigTable.GetUIText("Vampire_Hard2"))
|
|
NovaAPI.SetTMPText(self._mapNode.TMPTogOpenQuest[3], ConfigTable.GetUIText("Vampire_Hard3"))
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnDisable()
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnDestroy()
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnRelease()
|
|
end
|
|
function VampireLevelSelect_questCtrl:OpenPanel(nType, nLevelId, bAnim)
|
|
local sKey = nType == 1 and "VampireQuestTitle_Season" or "VampireQuestTitle_Pass"
|
|
NovaAPI.SetTMPText(self._mapNode.TMPTitleQuest, ConfigTable.GetUIText(sKey))
|
|
self.tbScore, self.tbPass = PlayerData.Quest:GetVampireQuestData()
|
|
self.nType = nType
|
|
self.nLevelId = nLevelId
|
|
self.gameObject:SetActive(true)
|
|
self._mapNode.rtWindow.gameObject:SetActive(false)
|
|
self.nScore = PlayerData.VampireSurvivor:GetCurScore()
|
|
self.tbCurQuestSeason = {}
|
|
self.tbCurQuest = {}
|
|
self.tbCurQuestHard = {}
|
|
self.nGroupIdSeason = 0
|
|
local nCurSeasonId = PlayerData.VampireSurvivor:GetCurSeason()
|
|
if nCurSeasonId ~= nil then
|
|
local mapSeasonData = ConfigTable.GetData("VampireRankSeason", nCurSeasonId)
|
|
if mapSeasonData ~= nil then
|
|
self.nGroupIdSeason = mapSeasonData.QuestGroup
|
|
end
|
|
end
|
|
for _, mapQuest in ipairs(self.tbScore) do
|
|
local mapQuestCfgData = ConfigTable.GetData("VampireSurvivorQuest", mapQuest.nTid)
|
|
if mapQuestCfgData ~= nil then
|
|
table.insert(self.tbCurQuestSeason, mapQuest)
|
|
end
|
|
end
|
|
self.tbCurQuest = {}
|
|
self.nGroupId = 0
|
|
if nLevelId ~= 0 and nLevelId ~= nil then
|
|
local mapLevelCfgData = ConfigTable.GetData("VampireSurvivor", nLevelId)
|
|
if mapLevelCfgData ~= nil then
|
|
self.nGroupId = mapLevelCfgData.FirstQuestGroupId
|
|
end
|
|
end
|
|
for _, mapQuest in ipairs(self.tbPass) do
|
|
local mapQuestCfgData = ConfigTable.GetData("VampireSurvivorQuest", mapQuest.nTid)
|
|
if mapQuestCfgData ~= nil then
|
|
if mapQuestCfgData.Type == GameEnum.vampireSurvivorType.Normal then
|
|
table.insert(self.tbCurQuest, mapQuest)
|
|
elseif mapQuestCfgData.Type == GameEnum.vampireSurvivorType.Hard then
|
|
table.insert(self.tbCurQuestHard, mapQuest)
|
|
end
|
|
end
|
|
end
|
|
local statusOrder = {
|
|
[0] = 1,
|
|
[1] = 2,
|
|
[2] = 0
|
|
}
|
|
local sort = function(a, b)
|
|
local mapQuestACfg = ConfigTable.GetData("VampireSurvivorQuest", a.nTid)
|
|
local mapQuestBCfg = ConfigTable.GetData("VampireSurvivorQuest", b.nTid)
|
|
if a.nStatus ~= b.nStatus then
|
|
return statusOrder[a.nStatus] > statusOrder[b.nStatus]
|
|
elseif mapQuestACfg.GroupId ~= mapQuestBCfg.GroupId and (mapQuestACfg.GroupId == self.nGroupId or mapQuestBCfg.GroupId == self.nGroupId) then
|
|
return mapQuestBCfg.GroupId ~= self.nGroupId
|
|
else
|
|
return a.nTid < b.nTid
|
|
end
|
|
end
|
|
table.sort(self.tbCurQuestSeason, sort)
|
|
table.sort(self.tbCurQuest, sort)
|
|
table.sort(self.tbCurQuestHard, sort)
|
|
self._mapNode.lsvWeekly:Init(#self.tbCurQuestSeason, self, self.OnGridRefreshSeason)
|
|
self._mapNode.lsvPass:Init(#self.tbCurQuest, self, self.OnGridRefreshNormal)
|
|
self._mapNode.listPassHard:Init(#self.tbCurQuestHard, self, self.OnGridRefreshHard)
|
|
NovaAPI.SetTMPText(self._mapNode.TMPScoreQuest, self.nScore)
|
|
self.tbLockTog = PlayerData.VampireSurvivor:GetHardUnlock()
|
|
self._mapNode.imgTogLockQuest[1]:SetActive(not self.tbLockTog[1])
|
|
self._mapNode.imgTogLockQuest[2]:SetActive(not self.tbLockTog[2])
|
|
self._mapNode.imgTogLockQuest[3]:SetActive(not self.tbLockTog[3])
|
|
self._mapNode.imgTimeBgQuest:SetActive(self.tbLockTog[3])
|
|
if not self.tbLockTog[3] then
|
|
NovaAPI.SetTMPText(self._mapNode.TMPRemainTimeQuest, PlayerData.VampireSurvivor:GetRefreshTiem())
|
|
end
|
|
if nLevelId ~= 0 and nLevelId ~= nil then
|
|
local mapLevelCfgData = ConfigTable.GetData("VampireSurvivor", nLevelId)
|
|
if mapLevelCfgData ~= nil then
|
|
if mapLevelCfgData.Type == GameEnum.vampireSurvivorType.Normal then
|
|
self:OnBtnClick_Tog(nil, 1)
|
|
elseif mapLevelCfgData.Type == GameEnum.vampireSurvivorType.Hard then
|
|
self:OnBtnClick_Tog(nil, 2)
|
|
else
|
|
self:OnBtnClick_Tog(nil, 3)
|
|
end
|
|
end
|
|
elseif self.nType == 1 then
|
|
self:OnBtnClick_Tog(nil, 1)
|
|
elseif self.nType == 2 then
|
|
self:OnBtnClick_Tog(nil, 2)
|
|
elseif self.nType == 3 then
|
|
self:OnBtnClick_Tog(nil, 3)
|
|
end
|
|
local wait = function()
|
|
NovaAPI.UIEffectSnapShotCapture(self._mapNode.snapshot)
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
self._mapNode.rtWindow.gameObject:SetActive(true)
|
|
if bAnim ~= false then
|
|
self._mapNode.aniWindow:Play("t_window_04_t_in")
|
|
end
|
|
end
|
|
cs_coroutine.start(wait)
|
|
end
|
|
function VampireLevelSelect_questCtrl:ClosePanel()
|
|
self.gameObject:SetActive(false)
|
|
self:UnbindAllGrids()
|
|
self.tbCurQuestSeason = {}
|
|
self.tbCurQuest = {}
|
|
self.tbCurQuestHard = {}
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnGridRefreshSeason(goGrid, nIdx)
|
|
local nIdx = nIdx + 1
|
|
if self._mapGridCtrl[goGrid] == nil then
|
|
local gridCtrl = self:BindCtrlByNode(goGrid, "Game.UI.VampireLevelSelect.VampireLevelSelect_questGridCtrl")
|
|
self._mapGridCtrl[goGrid] = gridCtrl
|
|
end
|
|
local mapQuestData
|
|
mapQuestData = self.tbCurQuestSeason[nIdx]
|
|
self._mapGridCtrl[goGrid]:Refresh(mapQuestData, -1)
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnGridRefreshNormal(goGrid, nIdx)
|
|
local nIdx = nIdx + 1
|
|
if self._mapGridCtrl[goGrid] == nil then
|
|
local gridCtrl = self:BindCtrlByNode(goGrid, "Game.UI.VampireLevelSelect.VampireLevelSelect_questGridCtrl")
|
|
self._mapGridCtrl[goGrid] = gridCtrl
|
|
end
|
|
local mapQuestData
|
|
mapQuestData = self.tbCurQuest[nIdx]
|
|
self._mapGridCtrl[goGrid]:Refresh(mapQuestData, self.nGroupId)
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnGridRefreshHard(goGrid, nIdx)
|
|
local nIdx = nIdx + 1
|
|
if self._mapGridCtrl[goGrid] == nil then
|
|
local gridCtrl = self:BindCtrlByNode(goGrid, "Game.UI.VampireLevelSelect.VampireLevelSelect_questGridCtrl")
|
|
self._mapGridCtrl[goGrid] = gridCtrl
|
|
end
|
|
local mapQuestData
|
|
mapQuestData = self.tbCurQuestHard[nIdx]
|
|
self._mapGridCtrl[goGrid]:Refresh(mapQuestData, self.nGroupId)
|
|
end
|
|
function VampireLevelSelect_questCtrl:UnbindAllGrids()
|
|
for go, ctrl in pairs(self._mapGridCtrl) do
|
|
self:UnbindCtrlByNode(ctrl)
|
|
end
|
|
self._mapGridCtrl = {}
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnBtnClick_ReceiveWeekly()
|
|
local tbQuestList = {}
|
|
for _, mapData in ipairs(self.tbCurQuestSeason) do
|
|
if mapData.nStatus == 1 then
|
|
table.insert(tbQuestList, mapData.nTid)
|
|
end
|
|
end
|
|
if #tbQuestList == 0 then
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("InfinityTower_Reward_Tips") or "")
|
|
return
|
|
end
|
|
local callback = function(changeInfo)
|
|
local RewardCallback = function()
|
|
self.tbScore, self.tbPass = PlayerData.Quest:GetVampireQuestData()
|
|
self:OpenPanel(3, self.nLevelId, false)
|
|
end
|
|
UTILS.OpenReceiveByChangeInfo(changeInfo, RewardCallback)
|
|
end
|
|
PlayerData.Quest:ReceiveVampireQuest(10, tbQuestList, callback)
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnBtnClick_ReceivePass()
|
|
local tbQuestList = {}
|
|
for _, mapData in ipairs(self.tbCurQuest) do
|
|
if mapData.nStatus == 1 then
|
|
table.insert(tbQuestList, mapData.nTid)
|
|
end
|
|
end
|
|
if #tbQuestList == 0 then
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("InfinityTower_Reward_Tips") or "")
|
|
return
|
|
end
|
|
local callback = function(changeInfo)
|
|
local RewardCallback = function()
|
|
self.tbScore, self.tbPass = PlayerData.Quest:GetVampireQuestData()
|
|
self:OpenPanel(1, self.nLevelId, false)
|
|
end
|
|
UTILS.OpenReceiveByChangeInfo(changeInfo, RewardCallback)
|
|
end
|
|
PlayerData.Quest:ReceiveVampireQuest(8, tbQuestList, callback)
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnBtnClick_ReceivePassHard()
|
|
local tbQuestList = {}
|
|
for _, mapData in ipairs(self.tbCurQuestHard) do
|
|
if mapData.nStatus == 1 then
|
|
table.insert(tbQuestList, mapData.nTid)
|
|
end
|
|
end
|
|
if #tbQuestList == 0 then
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("InfinityTower_Reward_Tips") or "")
|
|
return
|
|
end
|
|
local callback = function(changeInfo)
|
|
local RewardCallback = function()
|
|
self.tbScore, self.tbPass = PlayerData.Quest:GetVampireQuestData()
|
|
self:OpenPanel(2, self.nLevelId, false)
|
|
end
|
|
UTILS.OpenReceiveByChangeInfo(changeInfo, RewardCallback)
|
|
end
|
|
PlayerData.Quest:ReceiveVampireQuest(9, tbQuestList, callback)
|
|
end
|
|
function VampireLevelSelect_questCtrl:OnBtnClick_Tog(_, nIdx)
|
|
if not self.tbLockTog[nIdx] then
|
|
local sTip = ConfigTable.GetUIText("Vampire_Unlock")
|
|
if nIdx == 2 then
|
|
sTip = ConfigTable.GetUIText("Vampire_UnlockTipNormal")
|
|
elseif nIdx == 3 then
|
|
local nCurSeasonId = PlayerData.VampireSurvivor:GetCurSeason()
|
|
if nCurSeasonId == nil or nCurSeasonId == 0 then
|
|
sTip = ConfigTable.GetUIText("Vampire_NotOpenHint")
|
|
else
|
|
sTip = ConfigTable.GetUIText("Vampire_UnlockTipHard")
|
|
end
|
|
end
|
|
EventManager.Hit(EventId.OpenMessageBox, sTip)
|
|
return
|
|
end
|
|
self._mapNode.rtWeekly:SetActive(nIdx == 3)
|
|
self._mapNode.rtPassHard:SetActive(nIdx == 2)
|
|
self._mapNode.rtPass:SetActive(nIdx == 1)
|
|
self._mapNode.imgTogOpenQuest[1].gameObject:SetActive(nIdx == 1)
|
|
self._mapNode.imgTogOpenQuest[2].gameObject:SetActive(nIdx == 2)
|
|
self._mapNode.imgTogOpenQuest[3].gameObject:SetActive(nIdx == 3)
|
|
self._mapNode.btnReceivePassHard.gameObject:SetActive(nIdx == 2)
|
|
self._mapNode.btnReceivePass.gameObject:SetActive(nIdx == 1)
|
|
self._mapNode.btnReceiveWeekly.gameObject:SetActive(nIdx == 3)
|
|
end
|
|
return VampireLevelSelect_questCtrl
|