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,384 @@
|
||||
local VampireLevelSelect_levelSelectCtrl = class("VampireLevelSelect_levelSelectCtrl", BaseCtrl)
|
||||
VampireLevelSelect_levelSelectCtrl._mapNodeConfig = {
|
||||
rtList = {},
|
||||
rtListHard = {},
|
||||
svLevelList = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
svLevelListHard = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
rtDisaster = {},
|
||||
TMPTog = {sComponentName = "TMP_Text", nCount = 3},
|
||||
TMPTogOpen = {sComponentName = "TMP_Text", nCount = 3},
|
||||
imgTogLock = {nCount = 3},
|
||||
imgTogOpen = {nCount = 3},
|
||||
btnTogBtn = {
|
||||
sComponentName = "UIButton",
|
||||
nCount = 3,
|
||||
callback = "OnBtnClick_Tog"
|
||||
},
|
||||
gridDisaster = {
|
||||
sCtrlName = "Game.UI.VampireLevelSelect.VampireLevelSelect_levelGridCtrl_Disaster"
|
||||
},
|
||||
imgTimeBgLevelSelect = {},
|
||||
TMPRemainTimeLevelSelect = {sComponentName = "TMP_Text"},
|
||||
TMPWeekScoreTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Vampire_Season_Score"
|
||||
},
|
||||
TMPWeekScore = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
VampireLevelSelect_levelSelectCtrl._mapEventConfig = {
|
||||
VampireQuestRefresh = "OnEvent_VampireQuestRefresh"
|
||||
}
|
||||
VampireLevelSelect_levelSelectCtrl._mapRedDotConfig = {}
|
||||
function VampireLevelSelect_levelSelectCtrl:Awake()
|
||||
self.mapGrid = {}
|
||||
self.tbNormalLevel = {}
|
||||
self.tbHardLevel = {}
|
||||
self.mapSeasonLevel = nil
|
||||
self.curToggle = 0
|
||||
self.tbTogUnlock = {}
|
||||
local nCurSeasonId = PlayerData.VampireSurvivor:GetCurSeason()
|
||||
local nCurSeasonLevel = 0
|
||||
if nCurSeasonId ~= nil then
|
||||
local mapSeasonData = ConfigTable.GetData("VampireRankSeason", nCurSeasonId)
|
||||
if mapSeasonData ~= nil then
|
||||
nCurSeasonLevel = mapSeasonData.MissionId
|
||||
end
|
||||
end
|
||||
local forEachVampireLevel = function(mapData)
|
||||
if mapData.Type == GameEnum.vampireSurvivorType.Normal then
|
||||
table.insert(self.tbNormalLevel, mapData)
|
||||
elseif mapData.Type == GameEnum.vampireSurvivorType.Hard then
|
||||
table.insert(self.tbHardLevel, mapData)
|
||||
elseif mapData.Id == nCurSeasonLevel then
|
||||
self.mapSeasonLevel = mapData
|
||||
end
|
||||
end
|
||||
ForEachTableLine(DataTable.VampireSurvivor, forEachVampireLevel)
|
||||
local sort = function(a, b)
|
||||
return a.Id < b.Id
|
||||
end
|
||||
table.sort(self.tbNormalLevel, sort)
|
||||
table.sort(self.tbHardLevel, sort)
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:FadeIn()
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:FadeOut()
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:OnEnable()
|
||||
self._mapNode.imgTogOpen[1]:SetActive(true)
|
||||
self._mapNode.imgTogOpen[2]:SetActive(false)
|
||||
self._mapNode.imgTogOpen[3]:SetActive(false)
|
||||
self._mapNode.rtList.gameObject:SetActive(true)
|
||||
self._mapNode.rtListHard.gameObject:SetActive(false)
|
||||
self._mapNode.rtDisaster:SetActive(false)
|
||||
self:Refresh()
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPTog[1], ConfigTable.GetUIText("Vampire_Hard1"))
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPTog[2], ConfigTable.GetUIText("Vampire_Hard2"))
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPTog[3], ConfigTable.GetUIText("Vampire_Hard3"))
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPTogOpen[1], ConfigTable.GetUIText("Vampire_Hard1"))
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPTogOpen[2], ConfigTable.GetUIText("Vampire_Hard2"))
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPTogOpen[3], ConfigTable.GetUIText("Vampire_Hard3"))
|
||||
local bUnlock1 = self:CheckHardUnlock(1)
|
||||
local bUnlock2 = self:CheckHardUnlock(2)
|
||||
local bUnlock3 = self:CheckHardUnlock(3)
|
||||
self.bShowTog1 = false
|
||||
self.bShowTog2 = false
|
||||
self._mapNode.imgTogLock[1]:SetActive(not bUnlock1)
|
||||
self._mapNode.imgTogLock[2]:SetActive(not bUnlock2)
|
||||
self._mapNode.imgTogLock[3]:SetActive(not bUnlock3)
|
||||
self.tbTogUnlock = {
|
||||
bUnlock1,
|
||||
bUnlock2,
|
||||
bUnlock3
|
||||
}
|
||||
self._mapNode.imgTimeBgLevelSelect:SetActive(PlayerData.VampireSurvivor:GetCurSeason() ~= 0 and bUnlock3)
|
||||
if self.curToggle == 0 then
|
||||
if bUnlock3 then
|
||||
self:OnBtnClick_Tog(nil, 3)
|
||||
EventManager.Hit("VampireQuestTitle", 3)
|
||||
elseif bUnlock2 then
|
||||
self:OnBtnClick_Tog(nil, 2)
|
||||
EventManager.Hit("VampireQuestTitle", 2)
|
||||
else
|
||||
self:OnBtnClick_Tog(nil, 1)
|
||||
EventManager.Hit("VampireQuestTitle", 1)
|
||||
end
|
||||
else
|
||||
local nIdx = self.curToggle
|
||||
self.curToggle = 0
|
||||
self:OnBtnClick_Tog(nil, nIdx)
|
||||
EventManager.Hit("VampireQuestTitle", self.curToggle)
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPRemainTimeLevelSelect, PlayerData.VampireSurvivor:GetRefreshTiem())
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPWeekScore, string.formatnumberthousands(PlayerData.VampireSurvivor:GetCurScore()))
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:Refresh()
|
||||
self._mapNode.svLevelList:Init(#self.tbNormalLevel, self, self.OnGridRefresh, self.OnBtnClickGrid, false)
|
||||
self._mapNode.svLevelListHard:Init(#self.tbHardLevel, self, self.OnGridRefreshHard, self.OnBtnClickGrid, false)
|
||||
if self.mapSeasonLevel ~= nil then
|
||||
self._mapNode.gridDisaster:Refresh(self.mapSeasonLevel)
|
||||
end
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:RefreshWithPosSet(nCurLevel)
|
||||
self:Refresh()
|
||||
local bUnlock1 = self:CheckHardUnlock(1)
|
||||
local bUnlock2 = self:CheckHardUnlock(2)
|
||||
local bUnlock3 = self:CheckHardUnlock(3)
|
||||
self.bShowTog1 = true
|
||||
self.bShowTog2 = true
|
||||
self._mapNode.imgTogLock[1]:SetActive(not bUnlock1)
|
||||
self._mapNode.imgTogLock[2]:SetActive(not bUnlock2)
|
||||
self._mapNode.imgTogLock[3]:SetActive(not bUnlock3)
|
||||
self.tbTogUnlock = {
|
||||
bUnlock1,
|
||||
bUnlock2,
|
||||
bUnlock3
|
||||
}
|
||||
self._mapNode.imgTimeBgLevelSelect:SetActive(PlayerData.VampireSurvivor:GetCurSeason() ~= 0 and bUnlock3)
|
||||
if self.curToggle == 0 then
|
||||
if bUnlock3 then
|
||||
self:OnBtnClick_Tog(nil, 3)
|
||||
EventManager.Hit("VampireQuestTitle", 3)
|
||||
elseif bUnlock2 then
|
||||
self:OnBtnClick_Tog(nil, 2)
|
||||
EventManager.Hit("VampireQuestTitle", 2)
|
||||
else
|
||||
self:OnBtnClick_Tog(nil, 1)
|
||||
EventManager.Hit("VampireQuestTitle", 1)
|
||||
end
|
||||
else
|
||||
self:OnBtnClick_Tog(nil, self.curToggle)
|
||||
EventManager.Hit("VampireQuestTitle", self.curToggle)
|
||||
end
|
||||
if self.curToggle == 1 then
|
||||
local nFirstLevel = 1
|
||||
for index, value in ipairs(self.tbNormalLevel) do
|
||||
if value.Id == nCurLevel then
|
||||
nFirstLevel = index
|
||||
end
|
||||
end
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.svLevelList:SetScrollGridPos(nFirstLevel - 1, 0.5, 0)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
self.bShowTog1 = true
|
||||
end
|
||||
if self.curToggle == 2 then
|
||||
local nFirstLevel = 1
|
||||
for index, value in ipairs(self.tbHardLevel) do
|
||||
if value.Id == nCurLevel then
|
||||
nFirstLevel = index
|
||||
end
|
||||
end
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.svLevelListHard:SetScrollGridPos(nFirstLevel - 1, 0.5, 0)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
self.bShowTog2 = true
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPRemainTimeLevelSelect, PlayerData.VampireSurvivor:GetRefreshTiem())
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPWeekScore, string.formatnumberthousands(PlayerData.VampireSurvivor:GetCurScore()))
|
||||
self.bShowTog1 = false
|
||||
self.bShowTog2 = false
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:NewSeason()
|
||||
self.mapSeasonLevel = nil
|
||||
local nCurSeasonId = PlayerData.VampireSurvivor:GetCurSeason()
|
||||
local nCurSeasonLevel = 0
|
||||
if nCurSeasonId ~= nil then
|
||||
local mapSeasonData = ConfigTable.GetData("VampireRankSeason", nCurSeasonId)
|
||||
if mapSeasonData ~= nil then
|
||||
nCurSeasonLevel = mapSeasonData.MissionId
|
||||
end
|
||||
end
|
||||
local forEachVampireLevel = function(mapData)
|
||||
if mapData.Id == nCurSeasonLevel then
|
||||
self.mapSeasonLevel = mapData
|
||||
end
|
||||
end
|
||||
ForEachTableLine(DataTable.VampireSurvivor, forEachVampireLevel)
|
||||
self:Refresh()
|
||||
local bUnlock1 = self:CheckHardUnlock(1)
|
||||
local bUnlock2 = self:CheckHardUnlock(2)
|
||||
local bUnlock3 = self:CheckHardUnlock(3)
|
||||
self.bShowTog1 = false
|
||||
self.bShowTog2 = false
|
||||
self._mapNode.imgTogLock[1]:SetActive(not bUnlock1)
|
||||
self._mapNode.imgTogLock[2]:SetActive(not bUnlock2)
|
||||
self._mapNode.imgTogLock[3]:SetActive(not bUnlock3)
|
||||
self.tbTogUnlock = {
|
||||
bUnlock1,
|
||||
bUnlock2,
|
||||
bUnlock3
|
||||
}
|
||||
self._mapNode.imgTimeBgLevelSelect:SetActive(PlayerData.VampireSurvivor:GetCurSeason() ~= 0 and bUnlock3)
|
||||
if self.curToggle == 0 then
|
||||
if bUnlock3 then
|
||||
self:OnBtnClick_Tog(nil, 3)
|
||||
EventManager.Hit("VampireQuestTitle", 3)
|
||||
elseif bUnlock2 then
|
||||
self:OnBtnClick_Tog(nil, 2)
|
||||
EventManager.Hit("VampireQuestTitle", 2)
|
||||
else
|
||||
self:OnBtnClick_Tog(nil, 1)
|
||||
EventManager.Hit("VampireQuestTitle", 1)
|
||||
end
|
||||
else
|
||||
self:OnBtnClick_Tog(nil, self.curToggle)
|
||||
EventManager.Hit("VampireQuestTitle", self.curToggle)
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPRemainTimeLevelSelect, PlayerData.VampireSurvivor:GetRefreshTiem())
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPWeekScore, string.formatnumberthousands(PlayerData.VampireSurvivor:GetCurScore()))
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:CheckHardUnlock(nHard)
|
||||
if nHard == 1 then
|
||||
for _, mapData in ipairs(self.tbNormalLevel) do
|
||||
local bUnLock, _, _ = PlayerData.VampireSurvivor:CheckLevelUnlock(mapData.Id)
|
||||
if bUnLock then
|
||||
return true
|
||||
end
|
||||
end
|
||||
elseif nHard == 2 then
|
||||
for _, mapData in ipairs(self.tbHardLevel) do
|
||||
local bUnLock, _, _ = PlayerData.VampireSurvivor:CheckLevelUnlock(mapData.Id)
|
||||
if bUnLock then
|
||||
return true
|
||||
end
|
||||
end
|
||||
elseif self.mapSeasonLevel ~= nil then
|
||||
local bUnLock, _, _ = PlayerData.VampireSurvivor:CheckLevelUnlock(self.mapSeasonLevel.Id)
|
||||
if bUnLock then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:OnGridRefresh(goGrid, gridIndex)
|
||||
if self.mapGrid[goGrid] == nil then
|
||||
local mapCtrl = self:BindCtrlByNode(goGrid, "Game.UI.VampireLevelSelect.VampireLevelSelect_levelGridCtrl")
|
||||
self.mapGrid[goGrid] = mapCtrl
|
||||
end
|
||||
local nIdx = gridIndex
|
||||
if nIdx == nil then
|
||||
return
|
||||
end
|
||||
nIdx = nIdx + 1
|
||||
local mapData = self.tbNormalLevel[nIdx]
|
||||
self.mapGrid[goGrid]:Refresh(mapData)
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:OnGridRefreshHard(goGrid, gridIndex)
|
||||
if self.mapGrid[goGrid] == nil then
|
||||
local mapCtrl = self:BindCtrlByNode(goGrid, "Game.UI.VampireLevelSelect.VampireLevelSelect_levelGridCtrl")
|
||||
self.mapGrid[goGrid] = mapCtrl
|
||||
end
|
||||
local nIdx = gridIndex
|
||||
if nIdx == nil then
|
||||
return
|
||||
end
|
||||
nIdx = nIdx + 1
|
||||
local mapData = self.tbHardLevel[nIdx]
|
||||
self.mapGrid[goGrid]:Refresh(mapData)
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:OnBtnClickGrid(goGrid, gridIndex)
|
||||
local WwiseManger = CS.WwiseAudioManager.Instance
|
||||
local nIdx = gridIndex
|
||||
if nIdx == nil then
|
||||
return
|
||||
end
|
||||
nIdx = nIdx + 1
|
||||
local mapData = self.tbNormalLevel[nIdx]
|
||||
if self.curToggle == 1 then
|
||||
mapData = self.tbNormalLevel[nIdx]
|
||||
elseif self.curToggle == 2 then
|
||||
mapData = self.tbHardLevel[nIdx]
|
||||
else
|
||||
mapData = self.mapSeasonLevel
|
||||
end
|
||||
local bUnLock, nType, content = PlayerData.VampireSurvivor:CheckLevelUnlock(mapData.Id)
|
||||
if not bUnLock then
|
||||
local sKey = "VampireTalent_LockCond" .. nType
|
||||
EventManager.Hit(EventId.OpenMessageBox, orderedFormat(ConfigTable.GetUIText(sKey), content))
|
||||
else
|
||||
EventManager.Hit("VampireLevelSelect_ClickLevelGrid", mapData)
|
||||
WwiseManger:PostEvent("ui_vampire_level_select")
|
||||
end
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:UnbindAllCtrl()
|
||||
for _, mapCtrl in pairs(self.mapGrid) do
|
||||
self:UnbindCtrlByNode(mapCtrl)
|
||||
end
|
||||
self.mapGrid = {}
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:OnDisable()
|
||||
self:UnbindAllCtrl()
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:OnDestroy()
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:OnRelease()
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:OnBtnClick_Tog(btn, nIdx)
|
||||
if not self:CheckHardUnlock(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.curToggle = nIdx
|
||||
self._mapNode.imgTogOpen[1]:SetActive(self.curToggle == 1)
|
||||
self._mapNode.imgTogOpen[2]:SetActive(self.curToggle == 2)
|
||||
self._mapNode.imgTogOpen[3]:SetActive(self.curToggle == 3)
|
||||
self._mapNode.rtList.gameObject:SetActive(self.curToggle == 1)
|
||||
self._mapNode.rtListHard.gameObject:SetActive(self.curToggle == 2)
|
||||
self._mapNode.rtDisaster:SetActive(self.curToggle == 3)
|
||||
EventManager.Hit("VampireQuestTitle", nIdx)
|
||||
EventManager.Hit("VampireToggleChange", nIdx)
|
||||
if not self.bShowTog1 and self.curToggle == 1 then
|
||||
local nFirstLevel = 1
|
||||
for index, value in ipairs(self.tbNormalLevel) do
|
||||
local bUnLock, nType, content = PlayerData.VampireSurvivor:CheckLevelUnlock(value.Id)
|
||||
if bUnLock then
|
||||
nFirstLevel = index
|
||||
end
|
||||
end
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.svLevelList:SetScrollGridPos(nFirstLevel - 1, 0.5, 0)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
self.bShowTog1 = true
|
||||
end
|
||||
if not self.bShowTog2 and self.curToggle == 2 then
|
||||
local nFirstLevel = 1
|
||||
for index, value in ipairs(self.tbHardLevel) do
|
||||
local bUnLock, nType, content = PlayerData.VampireSurvivor:CheckLevelUnlock(value.Id)
|
||||
if bUnLock then
|
||||
nFirstLevel = index
|
||||
end
|
||||
end
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.svLevelListHard:SetScrollGridPos(nFirstLevel - 1, 0.5, 0)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
self.bShowTog2 = true
|
||||
end
|
||||
end
|
||||
function VampireLevelSelect_levelSelectCtrl:OnEvent_VampireQuestRefresh()
|
||||
EventManager.Hit("VampireQuestTitle", self.curToggle)
|
||||
end
|
||||
return VampireLevelSelect_levelSelectCtrl
|
||||
Reference in New Issue
Block a user