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,257 @@
|
||||
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
|
||||
Reference in New Issue
Block a user