5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
258 lines
8.0 KiB
Lua
258 lines
8.0 KiB
Lua
local StarTowerQuestCtrl = class("StarTowerQuestCtrl", BaseCtrl)
|
||
local totalLength = 641.449
|
||
local totalHeight = 37
|
||
local JumpUtil = require("Game.Common.Utils.JumpUtil")
|
||
local WwiseManger = CS.WwiseAudioManager.Instance
|
||
StarTowerQuestCtrl._mapNodeConfig = {
|
||
TopBar = {
|
||
sNodeName = "TopBarPanel",
|
||
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
||
},
|
||
Light = {},
|
||
txtNormalEmpty = {
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "STQuest_NormalClear"
|
||
},
|
||
txtCoreEmpty = {
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "STQuest_CoreClear"
|
||
},
|
||
btnReceiveAll = {
|
||
sComponentName = "UIButton",
|
||
callback = "OnBtnClick_ReceiveAll"
|
||
},
|
||
txtBtnReceiveAll = {
|
||
nCount = 2,
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "Quest_ReceiveAll"
|
||
},
|
||
btnGrowth = {
|
||
sComponentName = "UIButton",
|
||
callback = "OnBtnClick_Growth"
|
||
},
|
||
txtBtnGrowth = {
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "STQuest_Btn_GotoGrowth"
|
||
},
|
||
btnNone = {
|
||
sComponentName = "UIButton",
|
||
callback = "OnBtnClick_None"
|
||
},
|
||
svQuest = {
|
||
sComponentName = "LoopScrollView"
|
||
},
|
||
CoreQuest = {},
|
||
Cube = {sComponentName = "Animator"},
|
||
TMPTitleCore = {sComponentName = "TMP_Text"},
|
||
TMPProcessCore = {sComponentName = "TMP_Text"},
|
||
rtBarFillCore = {
|
||
sComponentName = "RectTransform"
|
||
},
|
||
btnReceiveCore = {
|
||
sComponentName = "UIButton",
|
||
callback = "OnBtnClick_Receive"
|
||
},
|
||
btnJumpCore = {
|
||
sComponentName = "UIButton",
|
||
callback = "OnBtnClick_JumpTo"
|
||
},
|
||
txtBtnReceiveCore = {
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "Quest_Receive"
|
||
},
|
||
txtBtnJumpCore = {
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "Quest_JumpTo"
|
||
},
|
||
TMPUncompleteCore = {
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "Quest_undone"
|
||
},
|
||
btnRewardCore = {
|
||
nCount = 3,
|
||
sComponentName = "UIButton",
|
||
callback = "OnBtnClick_Reward"
|
||
},
|
||
goItemCore = {
|
||
nCount = 3,
|
||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
|
||
}
|
||
}
|
||
StarTowerQuestCtrl._mapEventConfig = {
|
||
StarTowerQuestReceived = "OnEvent_Received",
|
||
StarTowerQuestClickGrid = "OnEvent_ClickGrid"
|
||
}
|
||
function StarTowerQuestCtrl:Refresh()
|
||
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
||
self:UnbindCtrlByNode(objCtrl)
|
||
self.tbGridCtrl[nInstanceId] = nil
|
||
end
|
||
self.tbCore, self.tbNormal = PlayerData.Quest:GetStarTowerQuestData()
|
||
local nNormalCount = #self.tbNormal
|
||
self._mapNode.svQuest.gameObject:SetActive(0 < nNormalCount)
|
||
self._mapNode.txtNormalEmpty.gameObject:SetActive(nNormalCount == 0)
|
||
if 0 < nNormalCount then
|
||
self._mapNode.svQuest:SetAnim(0.08)
|
||
self._mapNode.svQuest:Init(nNormalCount, self, self.OnGridRefresh, nil, self.bPos)
|
||
end
|
||
local nCoreCount = #self.tbCore
|
||
self._mapNode.CoreQuest.gameObject:SetActive(0 < nCoreCount)
|
||
self._mapNode.txtCoreEmpty.gameObject:SetActive(nCoreCount == 0)
|
||
if 0 < nCoreCount then
|
||
local mapQuest = self.tbCore[1]
|
||
self:RefreshCore(mapQuest.nTid, mapQuest.nStatus, mapQuest.nCurProgress, mapQuest.nGoal)
|
||
self._mapNode.Light.gameObject:SetActive(mapQuest.nStatus == 1)
|
||
else
|
||
self._mapNode.Light.gameObject:SetActive(false)
|
||
end
|
||
local bClear = true
|
||
for _, v in pairs(self.tbNormal) do
|
||
if v.nStatus == 1 then
|
||
bClear = false
|
||
break
|
||
end
|
||
end
|
||
for _, v in pairs(self.tbCore) do
|
||
if v.nStatus == 1 then
|
||
bClear = false
|
||
break
|
||
end
|
||
end
|
||
self._mapNode.btnReceiveAll.gameObject:SetActive(not bClear)
|
||
self._mapNode.btnReceiveAll.interactable = true
|
||
self._mapNode.btnNone.gameObject:SetActive(bClear and 0 < nNormalCount + nCoreCount)
|
||
if nCoreCount == 0 and not self.bFirstIn then
|
||
self._mapNode.Cube:Play("StarTowerQuest_Cube_finishin")
|
||
elseif not self.bFirstIn then
|
||
self._mapNode.Cube:Play("StarTowerQuest_Cube_in", 0, 1)
|
||
end
|
||
end
|
||
function StarTowerQuestCtrl:OnGridRefresh(goGrid, gridIndex)
|
||
local nIndex = gridIndex + 1
|
||
local mapQuest = self.tbNormal[nIndex]
|
||
local nInstanceID = goGrid:GetInstanceID()
|
||
if not self.tbGridCtrl[nInstanceID] then
|
||
self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(goGrid, "Game.UI.StarTowerQuest.StarTowerQuestGridCtrl")
|
||
end
|
||
self.tbGridCtrl[nInstanceID]:Refresh(mapQuest.nTid, mapQuest.nStatus, mapQuest.nCurProgress, mapQuest.nGoal, gridIndex)
|
||
end
|
||
function StarTowerQuestCtrl:RefreshCore(nQuestId, nState, nCur, nTotal)
|
||
self.nCoreQusetId = nQuestId
|
||
local mapQuest = ConfigTable.GetData("StarTowerQuest", nQuestId)
|
||
if mapQuest == nil then
|
||
printError("QuestData missing:" .. nQuestId)
|
||
return
|
||
end
|
||
NovaAPI.SetTMPText(self._mapNode.TMPTitleCore, mapQuest.Title)
|
||
if nState ~= 2 then
|
||
NovaAPI.SetTMPText(self._mapNode.TMPProcessCore, string.format("%d/%d", nCur, nTotal))
|
||
else
|
||
NovaAPI.SetTMPText(self._mapNode.TMPProcessCore, ConfigTable.GetUIText("Quest_Complete"))
|
||
end
|
||
self.mapCoreQuset = mapQuest
|
||
self._mapNode.rtBarFillCore.sizeDelta = Vector2(nCur / nTotal * totalLength, totalHeight)
|
||
self._mapNode.btnReceiveCore.gameObject:SetActive(nState == 1)
|
||
self._mapNode.btnReceiveCore.interactable = true
|
||
self._mapNode.btnJumpCore.gameObject:SetActive(nState == 0 and 0 < mapQuest.JumpTo)
|
||
self._mapNode.TMPUncompleteCore.gameObject:SetActive(nState == 0 and mapQuest.JumpTo == 0)
|
||
for i = 1, 3 do
|
||
self._mapNode.btnRewardCore[i].gameObject:SetActive(0 < mapQuest["Reward" .. i])
|
||
if 0 < mapQuest["Reward" .. i] then
|
||
self._mapNode.goItemCore[i]:SetItem(mapQuest["Reward" .. i], nil, mapQuest["RewardQty" .. i], nil, nil, nil, nil, true)
|
||
end
|
||
end
|
||
end
|
||
function StarTowerQuestCtrl:FadeIn()
|
||
if #self.tbCore == 0 then
|
||
self._mapNode.Cube:Play("StarTowerQuest_Cube_finishin")
|
||
else
|
||
self._mapNode.Cube:Play("StarTowerQuest_Cube_in")
|
||
end
|
||
self.bFirstIn = false
|
||
end
|
||
function StarTowerQuestCtrl:Awake()
|
||
self.tbGridCtrl = {}
|
||
self.bPos = false
|
||
self.bFirstIn = true
|
||
end
|
||
function StarTowerQuestCtrl:OnEnable()
|
||
self:Refresh()
|
||
end
|
||
function StarTowerQuestCtrl:OnDisable()
|
||
self.bPos = true
|
||
for k, v in pairs(self.tbGridCtrl) do
|
||
self:UnbindCtrlByNode(v)
|
||
self.tbGridCtrl[k] = nil
|
||
end
|
||
self.tbGridCtrl = {}
|
||
end
|
||
function StarTowerQuestCtrl:OnDestroy()
|
||
end
|
||
function StarTowerQuestCtrl:OnBtnClick_ReceiveAll(btn)
|
||
self._mapNode.btnReceiveAll.interactable = false
|
||
local bHasCore = false
|
||
if #self.tbCore > 0 and self.nCoreQusetId then
|
||
for _, v in pairs(self.tbCore) do
|
||
if v.nTid == self.nCoreQusetId and v.nStatus == 1 then
|
||
bHasCore = true
|
||
break
|
||
end
|
||
end
|
||
end
|
||
if bHasCore then
|
||
WwiseManger:PlaySound("ui_rogue_research_ani")
|
||
self._mapNode.Cube:Play("StarTowerQuest_Cube_open")
|
||
local nAnimLen = NovaAPI.GetAnimClipLength(self._mapNode.Cube, {
|
||
"StarTowerQuest_Cube_open"
|
||
})
|
||
EventManager.Hit(EventId.TemporaryBlockInput, nAnimLen)
|
||
self:AddTimer(1, nAnimLen, function()
|
||
PlayerData.Quest:ReceiveStarTowerReward(0)
|
||
end, true, true, true)
|
||
else
|
||
PlayerData.Quest:ReceiveStarTowerReward(0)
|
||
end
|
||
end
|
||
function StarTowerQuestCtrl:OnBtnClick_Growth(btn)
|
||
EventManager.Hit(EventId.OpenPanel, PanelId.StarTowerGrowth)
|
||
end
|
||
function StarTowerQuestCtrl:OnBtnClick_Receive()
|
||
self._mapNode.btnReceiveCore.interactable = false
|
||
WwiseManger:PlaySound("ui_rogue_research_ani")
|
||
self._mapNode.Cube:Play("StarTowerQuest_Cube_open")
|
||
local nAnimLen = NovaAPI.GetAnimClipLength(self._mapNode.Cube, {
|
||
"StarTowerQuest_Cube_open"
|
||
})
|
||
EventManager.Hit(EventId.TemporaryBlockInput, nAnimLen)
|
||
self:AddTimer(1, nAnimLen, function()
|
||
PlayerData.Quest:ReceiveStarTowerReward(self.nCoreQusetId)
|
||
end, true, true, true)
|
||
end
|
||
function StarTowerQuestCtrl:OnBtnClick_JumpTo()
|
||
local nJumptoId = self.mapCoreQuset.JumpTo
|
||
JumpUtil.JumpTo(nJumptoId)
|
||
end
|
||
function StarTowerQuestCtrl:OnBtnClick_Reward(btn, nIndex)
|
||
local mapData = {
|
||
nTid = self.mapCoreQuset["Reward" .. nIndex],
|
||
bShowDepot = true,
|
||
bShowJumpto = true
|
||
}
|
||
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, btn.transform, mapData)
|
||
end
|
||
function StarTowerQuestCtrl:OnBtnClick_None()
|
||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Quest_ReceiveNone"))
|
||
end
|
||
function StarTowerQuestCtrl:OnEvent_Received()
|
||
self:Refresh()
|
||
end
|
||
function StarTowerQuestCtrl:OnEvent_ClickGrid(gridIndex, callback)
|
||
self._mapNode.svQuest:SetScrollGridPos(gridIndex, 0.1, 1)
|
||
EventManager.Hit(EventId.BlockInput, true)
|
||
self:AddTimer(1, 0.1, function()
|
||
EventManager.Hit(EventId.BlockInput, false)
|
||
callback()
|
||
end, true, true, true)
|
||
end
|
||
return StarTowerQuestCtrl
|