5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
178 lines
5.8 KiB
Lua
178 lines
5.8 KiB
Lua
local StarTowerBookQuestCtrl = class("StarTowerBookQuestCtrl", BaseCtrl)
|
|
StarTowerBookQuestCtrl._mapNodeConfig = {
|
|
goWindowBlur = {},
|
|
goQuestWindow = {},
|
|
animRoot = {
|
|
sNodeName = "goQuestWindow",
|
|
sComponentName = "Animator"
|
|
},
|
|
txtWindowTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "StarTower_Book_Quest_Title"
|
|
},
|
|
btnClose = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Close"
|
|
},
|
|
questLSV = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
btnReceive = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Receive"
|
|
},
|
|
txtReceiveBtn = {
|
|
nCount = 2,
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "StarTower_Book_Quest_Quick_Receive"
|
|
},
|
|
btnReceiveGray = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_ReceiveGray"
|
|
},
|
|
btnQuestBg = {
|
|
sComponentName = "Button",
|
|
callback = "OnBtnClick_Close"
|
|
}
|
|
}
|
|
StarTowerBookQuestCtrl._mapEventConfig = {}
|
|
StarTowerBookQuestCtrl._mapRedDotConfig = {}
|
|
function StarTowerBookQuestCtrl:ShowWindow(nParam)
|
|
self._mapNode.goQuestWindow.gameObject:SetActive(false)
|
|
self._mapNode.goWindowBlur.gameObject:SetActive(true)
|
|
local wait = function()
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
self._mapNode.goQuestWindow.gameObject:SetActive(true)
|
|
self._mapNode.animRoot:Play("t_window_04_t_in")
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
|
if self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Potential then
|
|
self:InitPotentialQuest(nParam)
|
|
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.FateCard then
|
|
self:InitFateCardQuest(nParam)
|
|
end
|
|
end
|
|
cs_coroutine.start(wait)
|
|
end
|
|
function StarTowerBookQuestCtrl:InitPotentialQuest(nCharId)
|
|
self.nCharId = nCharId
|
|
self.mapQuest = {}
|
|
local mapQuest = PlayerData.StarTowerBook:GetCharPotentialQuest(nCharId)
|
|
self._mapNode.questLSV.gameObject:SetActive(mapQuest ~= nil)
|
|
if mapQuest == nil then
|
|
return
|
|
end
|
|
for nId, data in pairs(mapQuest) do
|
|
data.Id = nId
|
|
table.insert(self.mapQuest, data)
|
|
end
|
|
table.sort(self.mapQuest, function(a, b)
|
|
if a.Status == b.Status then
|
|
return a.Id < b.Id
|
|
end
|
|
return a.Status < b.Status
|
|
end)
|
|
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.tbGridCtrl[nInstanceId] = nil
|
|
end
|
|
self._mapNode.questLSV:Init(#self.mapQuest, self, self.OnPotentialGridRefresh, nil)
|
|
local bCanReceive = false
|
|
for _, v in ipairs(self.mapQuest) do
|
|
if v.Status == AllEnum.BookQuestStatus.Complete then
|
|
bCanReceive = true
|
|
break
|
|
end
|
|
end
|
|
self._mapNode.btnReceive.gameObject:SetActive(bCanReceive)
|
|
self._mapNode.btnReceiveGray.gameObject:SetActive(not bCanReceive)
|
|
end
|
|
function StarTowerBookQuestCtrl:OnPotentialGridRefresh(goGrid, goIndex)
|
|
local nInstanceID = goGrid:GetInstanceID()
|
|
if not self.tbGridCtrl[nInstanceID] then
|
|
self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(goGrid, "Game.UI.StarTowerBook.Quest.BookQuestItemCtrl")
|
|
end
|
|
local questData = self.mapQuest[goIndex + 1]
|
|
self.tbGridCtrl[nInstanceID]:InitPotentialItem(questData)
|
|
end
|
|
function StarTowerBookQuestCtrl:InitFateCardQuest(nBundleId)
|
|
self.nBundleId = nBundleId
|
|
self.mapQuest = PlayerData.StarTowerBook:GetFateCardBundleQuest(nBundleId)
|
|
table.sort(self.mapQuest, function(a, b)
|
|
if a.Status == b.Status then
|
|
return a.Id < b.Id
|
|
end
|
|
return a.Status < b.Status
|
|
end)
|
|
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.tbGridCtrl[nInstanceId] = nil
|
|
end
|
|
self._mapNode.questLSV:Init(#self.mapQuest, self, self.OnFateCardGridRefresh, nil)
|
|
local bCanReceive = false
|
|
for _, v in ipairs(self.mapQuest) do
|
|
if v.Status == AllEnum.BookQuestStatus.Complete then
|
|
bCanReceive = true
|
|
break
|
|
end
|
|
end
|
|
self._mapNode.btnReceive.gameObject:SetActive(bCanReceive)
|
|
self._mapNode.btnReceiveGray.gameObject:SetActive(not bCanReceive)
|
|
end
|
|
function StarTowerBookQuestCtrl:OnFateCardGridRefresh(goGrid, goIndex)
|
|
local nInstanceID = goGrid:GetInstanceID()
|
|
if not self.tbGridCtrl[nInstanceID] then
|
|
self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(goGrid, "Game.UI.StarTowerBook.Quest.BookQuestItemCtrl")
|
|
end
|
|
local questData = self.mapQuest[goIndex + 1]
|
|
self.tbGridCtrl[nInstanceID]:InitFateCardItem(questData)
|
|
end
|
|
function StarTowerBookQuestCtrl:CloseWindow()
|
|
self._mapNode.animRoot:Play("t_window_04_t_out")
|
|
local nAnim = NovaAPI.GetAnimClipLength(self._mapNode.animRoot, {
|
|
"t_window_04_t_out"
|
|
})
|
|
EventManager.Hit(EventId.TemporaryBlockInput, nAnim)
|
|
self:AddTimer(1, nAnim, function()
|
|
self._mapNode.goQuestWindow.gameObject:SetActive(false)
|
|
self._mapNode.goWindowBlur.gameObject:SetActive(false)
|
|
self.gameObject:SetActive(false)
|
|
end, true, true, true, true)
|
|
end
|
|
function StarTowerBookQuestCtrl:Awake()
|
|
self.tbGridCtrl = {}
|
|
end
|
|
function StarTowerBookQuestCtrl:FadeIn()
|
|
end
|
|
function StarTowerBookQuestCtrl:FadeOut()
|
|
end
|
|
function StarTowerBookQuestCtrl:OnEnable()
|
|
end
|
|
function StarTowerBookQuestCtrl:OnDisable()
|
|
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.tbGridCtrl[nInstanceId] = nil
|
|
end
|
|
end
|
|
function StarTowerBookQuestCtrl:OnBtnClick_Close()
|
|
self:CloseWindow()
|
|
end
|
|
function StarTowerBookQuestCtrl:OnBtnClick_Receive()
|
|
local callback = function()
|
|
if self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Potential then
|
|
self:InitPotentialQuest(self.nCharId)
|
|
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.FateCard then
|
|
self:InitFateCardQuest(self.nBundleId)
|
|
end
|
|
self:CloseWindow()
|
|
end
|
|
if self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Potential then
|
|
PlayerData.StarTowerBook:SendReceivePotentialRewardMsg(self.nCharId, callback)
|
|
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.FateCard then
|
|
PlayerData.StarTowerBook:SendReceiveFateCardRewardMsg(self.nBundleId, 0, callback)
|
|
end
|
|
end
|
|
function StarTowerBookQuestCtrl:OnBtnClick_ReceiveGray()
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("StarTower_Book_Quest_Reward"))
|
|
end
|
|
return StarTowerBookQuestCtrl
|