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,401 @@
|
||||
local TutorialDiscSkillActiveCtrl = class("TutorialDiscSkillActiveCtrl", BaseCtrl)
|
||||
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
||||
local WwiseManger = CS.WwiseAudioManager.Instance
|
||||
TutorialDiscSkillActiveCtrl._mapNodeConfig = {
|
||||
blurBg = {},
|
||||
contentRoot = {
|
||||
sNodeName = "----SafeAreaRoot----"
|
||||
},
|
||||
animRoot = {
|
||||
sNodeName = "----SafeAreaRoot----",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
btnBg = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_BtnBg"
|
||||
},
|
||||
btnShortcutBg = {
|
||||
sComponentName = "NaviButton",
|
||||
callback = "OnBtnClick_BtnBg",
|
||||
sAction = "Confirm"
|
||||
},
|
||||
cgSkillList = {
|
||||
sNodeName = "goSkillList",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
btnDepot = {
|
||||
sComponentName = "NaviButton",
|
||||
callback = "OnBtnClick_Depot"
|
||||
},
|
||||
txtTitle = {sComponentName = "TMP_Text"},
|
||||
goAllNoteList = {},
|
||||
imgNote = {sComponentName = "Image", nCount = 9},
|
||||
goNoteList = {},
|
||||
goNoteItem = {},
|
||||
noteContent = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
btnNoteList = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_BtnBg"
|
||||
},
|
||||
goSkillList = {},
|
||||
goSkillItem = {},
|
||||
skillContent = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
btnSkillList = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_BtnBg"
|
||||
},
|
||||
goSkillCard = {},
|
||||
goNoteCardItem = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateDiscSkillCardCtrl"
|
||||
},
|
||||
imgIconBgEffect = {sComponentName = "Image"},
|
||||
imgIconEffect = {sComponentName = "Image"},
|
||||
imgCornerBgEffect = {sComponentName = "Image"},
|
||||
txtTips = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Tips_Continue"
|
||||
},
|
||||
txtClickPre = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Click_Pre"
|
||||
},
|
||||
txtClickSuf = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Click_Suf"
|
||||
},
|
||||
Tips = {
|
||||
sCtrlName = "Game.UI.StarTower.DiscTips.StarTowerTipsCtrl"
|
||||
}
|
||||
}
|
||||
TutorialDiscSkillActiveCtrl._mapEventConfig = {
|
||||
StarTowerShowDiscSkill = "OnEvent_ShowDiscSkillActive",
|
||||
OpenNoteDepot = "OnEvent_OpenNoteDepot",
|
||||
GamepadUIReopen = "OnEvent_Reopen",
|
||||
StarTowerDiscTips = "OnEvent_StarTowerDiscTips"
|
||||
}
|
||||
TutorialDiscSkillActiveCtrl._mapRedDotConfig = {}
|
||||
local panel_stage_note = 1
|
||||
local panel_stage_skill = 2
|
||||
local panel_stage_skill_upgrade = 3
|
||||
function TutorialDiscSkillActiveCtrl:InitNoteSkillList(tbNoteList)
|
||||
if self.tbShowNote == nil then
|
||||
self.tbShowNote = {}
|
||||
for id, _ in pairs(tbNoteList) do
|
||||
table.insert(self.tbShowNote, id)
|
||||
end
|
||||
table.sort(self.tbShowNote, function(a, b)
|
||||
return a < b
|
||||
end)
|
||||
for k, v in ipairs(self._mapNode.imgNote) do
|
||||
v.gameObject:SetActive(self.tbShowNote[k] ~= nil)
|
||||
if self.tbShowNote[k] ~= nil then
|
||||
local mapNoteCfg = ConfigTable.GetData("SubNoteSkill", self.tbShowNote[k])
|
||||
if nil ~= mapNoteCfg then
|
||||
self:SetPngSprite(v, mapNoteCfg.Icon .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:ShowNoteList(tbParam, callback)
|
||||
self._mapNode.Tips.gameObject:SetActive(true)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTitle, ConfigTable.GetUIText("StarTower_Disc_Skill_Active_1"))
|
||||
self._panel:SetTop(self.canvas)
|
||||
local bCloseCamera = false
|
||||
if not self.bOpen then
|
||||
PanelManager.InputDisable()
|
||||
bCloseCamera = true
|
||||
GamepadUIManager.EnableGamepadUI("TutorialDiscSkillActiveCtrl", self.tbGamepadUINode)
|
||||
end
|
||||
self.bOpen = true
|
||||
EventManager.Hit("StarTowerSetButtonEnable", false, false)
|
||||
self.callback = callback
|
||||
self._mapNode.blurBg.gameObject:SetActive(true)
|
||||
self._mapNode.btnBg.gameObject:SetActive(true)
|
||||
self._mapNode.contentRoot.gameObject:SetActive(false)
|
||||
EventManager.Hit(EventId.BlockInput, true)
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
EventManager.Hit(EventId.BlockInput, false)
|
||||
if bCloseCamera then
|
||||
CS.GameCameraStackManager.Instance:CloseMainCamera(0.1)
|
||||
end
|
||||
self._mapNode.contentRoot.gameObject:SetActive(true)
|
||||
self._mapNode.goNoteList.gameObject:SetActive(true)
|
||||
self._mapNode.goSkillList.gameObject:SetActive(false)
|
||||
self._mapNode.goSkillCard.gameObject:SetActive(false)
|
||||
self.nPanelStage = panel_stage_note
|
||||
self:RefreshAllNoteList(tbParam.tbNoteChange)
|
||||
self:RefreshNoteSkill(tbParam.tbNoteChange)
|
||||
WwiseManger:PlaySound("ui_roguelike_phonograph_mus")
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:RefreshAllNoteList(tbNoteChange)
|
||||
for k, v in ipairs(self._mapNode.imgNote) do
|
||||
local nNoteId = self.tbShowNote[k]
|
||||
v.gameObject:SetActive(nNoteId ~= nil)
|
||||
if nNoteId ~= nil then
|
||||
local tmpCount = v.gameObject.transform:Find("txtNoteCount"):GetComponent("TMP_Text")
|
||||
local imgArrow = v.gameObject.transform:Find("imgArrow")
|
||||
NovaAPI.SetTMPText(tmpCount, self.tbNoteList[nNoteId] or 0)
|
||||
imgArrow.gameObject:SetActive(tbNoteChange[nNoteId] ~= nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:RefreshNoteSkill(tbNoteChange)
|
||||
local tbNoteSkill = {}
|
||||
for nId, v in pairs(tbNoteChange) do
|
||||
table.insert(tbNoteSkill, {
|
||||
nNoteId = nId,
|
||||
nCount = v.nCount,
|
||||
bLucky = v.bLucky
|
||||
})
|
||||
end
|
||||
table.sort(tbNoteSkill, function(a, b)
|
||||
return a.nNoteId < b.nNoteId
|
||||
end)
|
||||
for _, v in ipairs(self.tbNoteSkillItemCtrl) do
|
||||
v.gameObject:SetActive(false)
|
||||
end
|
||||
local tbCtrl = {}
|
||||
for k, v in ipairs(tbNoteSkill) do
|
||||
local objCtrl = self.tbNoteSkillItemCtrl[k]
|
||||
if objCtrl == nil then
|
||||
local objItem = instantiate(self._mapNode.goNoteItem, self._mapNode.noteContent)
|
||||
objCtrl = self:BindCtrlByNode(objItem, "Game.UI.StarTower.DiscTips.DiscNoteSkillItemCtrl")
|
||||
table.insert(self.tbNoteSkillItemCtrl, objCtrl)
|
||||
end
|
||||
objCtrl.gameObject:SetActive(false)
|
||||
local nCurLevel = self.tbNoteList[v.nNoteId] or 0
|
||||
objCtrl:SetSkillItem(v.nNoteId, nCurLevel, nCurLevel - v.nCount, v.bLucky)
|
||||
table.insert(tbCtrl, objCtrl)
|
||||
end
|
||||
local nIndex = 1
|
||||
if 0 < #tbCtrl then
|
||||
EventManager.Hit(EventId.BlockInput, true)
|
||||
self:AddTimer(#tbCtrl, 0.08, function()
|
||||
local objCtrl = tbCtrl[nIndex]
|
||||
nIndex = nIndex + 1
|
||||
if objCtrl ~= nil then
|
||||
objCtrl.gameObject:SetActive(true)
|
||||
end
|
||||
if nIndex > #tbCtrl then
|
||||
EventManager.Hit(EventId.BlockInput, false)
|
||||
self._mapNode.txtTips[1].gameObject:SetActive(true)
|
||||
self._mapNode.txtTips[2].gameObject:SetActive(true)
|
||||
EventManager.Hit("Guide_PassiveCheck_Msg", "Guide_OpenDiscSkillActive_Tutorial")
|
||||
end
|
||||
end, true, true, true)
|
||||
else
|
||||
EventManager.Hit(EventId.BlockInput, false)
|
||||
end
|
||||
self._mapNode.txtTips[1].gameObject:SetActive(false)
|
||||
self._mapNode.txtTips[2].gameObject:SetActive(false)
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:RefreshDiscSkill(tbSkillList)
|
||||
WwiseManger:PlaySound("ui_roguelike_phonograph_mus")
|
||||
self._mapNode.goNoteList.gameObject:SetActive(false)
|
||||
self._mapNode.goSkillList.gameObject:SetActive(true)
|
||||
self._mapNode.goSkillCard.gameObject:SetActive(false)
|
||||
local tbCtrl = {}
|
||||
if tbSkillList ~= nil then
|
||||
for _, v in ipairs(self.tbSkillItemCtrl) do
|
||||
v.gameObject:SetActive(false)
|
||||
end
|
||||
for k, v in ipairs(tbSkillList) do
|
||||
local objCtrl = self.tbSkillItemCtrl[k]
|
||||
if objCtrl == nil then
|
||||
local objItem = instantiate(self._mapNode.goSkillItem, self._mapNode.skillContent)
|
||||
objCtrl = self:BindCtrlByNode(objItem, "Game.UI.StarTower.DiscTips.DiscSkillItemCtrl")
|
||||
table.insert(self.tbSkillItemCtrl, objCtrl)
|
||||
end
|
||||
objCtrl.gameObject:SetActive(false)
|
||||
objCtrl:SetSkillItem(v.nSkillId, v.tbChangeNote, self.tbNoteList)
|
||||
table.insert(tbCtrl, objCtrl)
|
||||
end
|
||||
end
|
||||
local nIndex = 1
|
||||
if 0 < #tbCtrl then
|
||||
EventManager.Hit(EventId.BlockInput, true)
|
||||
self:AddTimer(#tbCtrl, 0.08, function()
|
||||
local objCtrl = tbCtrl[nIndex]
|
||||
nIndex = nIndex + 1
|
||||
if objCtrl ~= nil then
|
||||
objCtrl.gameObject:SetActive(true)
|
||||
objCtrl:PlayAnim()
|
||||
end
|
||||
if nIndex > #tbCtrl then
|
||||
EventManager.Hit(EventId.BlockInput, false)
|
||||
self._mapNode.txtTips[1].gameObject:SetActive(true)
|
||||
self._mapNode.txtTips[2].gameObject:SetActive(true)
|
||||
end
|
||||
end, true, true, true)
|
||||
self._mapNode.txtTips[1].gameObject:SetActive(false)
|
||||
self._mapNode.txtTips[2].gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:ShowDiscUpgradeCard()
|
||||
self._mapNode.txtTips[1].gameObject:SetActive(false)
|
||||
self._mapNode.txtTips[2].gameObject:SetActive(false)
|
||||
self._mapNode.animRoot:Play("DiscSkillActive_Card", 0, 0)
|
||||
local nAnimLen = NovaAPI.GetAnimClipLength(self._mapNode.animRoot, {
|
||||
"DiscSkillActive_Card"
|
||||
})
|
||||
self:AddTimer(1, nAnimLen, function()
|
||||
self._mapNode.txtTips[1].gameObject:SetActive(true)
|
||||
self._mapNode.txtTips[2].gameObject:SetActive(true)
|
||||
end, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, nAnimLen)
|
||||
WwiseManger:PlaySound("ui_roguelike_outfit_select")
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTitle, ConfigTable.GetUIText("StarTower_Disc_Skill_Active_2"))
|
||||
self._mapNode.goSkillCard.gameObject:SetActive(true)
|
||||
self._mapNode.goNoteList.gameObject:SetActive(false)
|
||||
self._mapNode.goSkillList.gameObject:SetActive(false)
|
||||
local mapData = table.remove(self.tbSkillActive, 1)
|
||||
if mapData ~= nil then
|
||||
self.nSkillId = mapData.nSkillId
|
||||
self._mapNode.goNoteCardItem:Refresh(mapData.nDiscId, nil, self.nSkillId)
|
||||
self._mapNode.goNoteCardItem:ChangeWordRaycast(true)
|
||||
local mapSkillCfg = ConfigTable.GetData("SecondarySkill", self.nSkillId)
|
||||
if mapSkillCfg ~= nil then
|
||||
self:SetPngSprite(self._mapNode.imgIconEffect, mapSkillCfg.Icon)
|
||||
self:SetPngSprite(self._mapNode.imgIconBgEffect, mapSkillCfg.IconBg)
|
||||
EventManager.Hit("Guide_PassiveCheck_Msg", "Guide_OpenStarTowerDepot_Tutorial")
|
||||
end
|
||||
end
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:HidePanel()
|
||||
self.bOpen = false
|
||||
GamepadUIManager.DisableGamepadUI("TutorialDiscSkillActiveCtrl")
|
||||
EventManager.Hit("StarTowerSetButtonEnable", true, true)
|
||||
PanelManager.InputEnable()
|
||||
self._mapNode.contentRoot.gameObject:SetActive(false)
|
||||
self._mapNode.blurBg.gameObject:SetActive(false)
|
||||
self._mapNode.btnBg.gameObject:SetActive(false)
|
||||
NovaAPI.SetCanvasSortingOrder(self.canvas, self.nInitSortingOrder)
|
||||
CS.GameCameraStackManager.Instance:OpenMainCamera()
|
||||
if nil ~= self.callback then
|
||||
self.callback()
|
||||
end
|
||||
CS.AdventureModuleHelper.ResumeLogic()
|
||||
PanelManager.InputEnable()
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:ReopenPanel()
|
||||
EventManager.Hit("StarTowerSetButtonEnable", false, false)
|
||||
self._mapNode.blurBg.gameObject:SetActive(true)
|
||||
self._mapNode.btnBg.gameObject:SetActive(true)
|
||||
EventManager.Hit(EventId.BlockInput, true)
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
EventManager.Hit(EventId.BlockInput, false)
|
||||
CS.GameCameraStackManager.Instance:CloseMainCamera(0.1)
|
||||
self._mapNode.contentRoot.gameObject:SetActive(true)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:Awake()
|
||||
self.nType = 0
|
||||
self.bOpen = false
|
||||
self.tbNoteSkillItemCtrl = {}
|
||||
self.tbSkillItemCtrl = {}
|
||||
self.canvas = self.gameObject:GetComponent("Canvas")
|
||||
self.nInitSortingOrder = NovaAPI.GetCanvasSortingOrder(self.canvas)
|
||||
self._mapNode.blurBg.gameObject:SetActive(false)
|
||||
self._mapNode.contentRoot.gameObject:SetActive(false)
|
||||
self._mapNode.btnBg.gameObject:SetActive(false)
|
||||
self._mapNode.goSkillItem.gameObject:SetActive(false)
|
||||
self.tbGamepadUINode = self:GetGamepadUINode()
|
||||
self._mapNode.btnDepot.gameObject:SetActive(false)
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:OnEnable()
|
||||
self.nPanelStage = 0
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:OnDisable()
|
||||
for _, v in ipairs(self.tbNoteSkillItemCtrl) do
|
||||
self:UnbindCtrlByNode(v)
|
||||
end
|
||||
self.tbNoteSkillItemCtrl = {}
|
||||
for _, v in ipairs(self.tbSkillItemCtrl) do
|
||||
self:UnbindCtrlByNode(v)
|
||||
end
|
||||
self.tbSkillItemCtrl = {}
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:OnBtnClick_BtnBg()
|
||||
if self.nPanelStage == panel_stage_note then
|
||||
if self.tbParam.tbSkill ~= nil and next(self.tbParam.tbSkill) ~= nil then
|
||||
self.nPanelStage = panel_stage_skill
|
||||
self:RefreshDiscSkill(self.tbParam.tbSkill)
|
||||
return
|
||||
else
|
||||
self.nPanelStage = 0
|
||||
end
|
||||
elseif self.nPanelStage == panel_stage_skill then
|
||||
if 0 < #self.tbSkillActive then
|
||||
self.nPanelStage = panel_stage_skill_upgrade
|
||||
self:ShowDiscUpgradeCard()
|
||||
return
|
||||
else
|
||||
self.nPanelStage = 0
|
||||
end
|
||||
elseif self.nPanelStage == panel_stage_skill_upgrade then
|
||||
if #self.tbSkillActive == 0 then
|
||||
self.nPanelStage = 0
|
||||
else
|
||||
self:ShowDiscUpgradeCard()
|
||||
return
|
||||
end
|
||||
end
|
||||
if self.nPanelStage == 0 then
|
||||
self:HidePanel()
|
||||
end
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:OnBtnClick_Depot()
|
||||
self.bDepotOpen = true
|
||||
EventManager.Hit("StarTowerSetButtonEnable", false, false)
|
||||
CS.GameCameraStackManager.Instance:OpenMainCamera()
|
||||
self._mapNode.contentRoot.gameObject:SetActive(false)
|
||||
self._mapNode.blurBg.gameObject:SetActive(false)
|
||||
self._mapNode.btnBg.gameObject:SetActive(false)
|
||||
EventManager.Hit(EventId.StarTowerDepot, AllEnum.StarTowerDepotTog.DiscSkill)
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:OnEvent_ShowDiscSkillActive(tbParam, tbNoteList, callback)
|
||||
CS.AdventureModuleHelper.PauseLogic()
|
||||
PanelManager.InputDisable()
|
||||
self:InitNoteSkillList(tbNoteList)
|
||||
self.tbParam = tbParam
|
||||
self.tbNoteList = tbNoteList
|
||||
self.tbSkillActive = tbParam.tbDiscSkillAct
|
||||
self:ShowNoteList(tbParam, callback)
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:OnEvent_StarTowerDiscTips(tbTips)
|
||||
self._mapNode.Tips.gameObject:SetActive(true)
|
||||
self._mapNode.Tips:StartShowTips(tbTips)
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:OnEvent_OpenNoteDepot()
|
||||
if self._mapNode.contentRoot.gameObject.activeSelf == false then
|
||||
return
|
||||
end
|
||||
self.bDepotOpen = true
|
||||
CS.GameCameraStackManager.Instance:OpenMainCamera()
|
||||
self._mapNode.contentRoot.gameObject:SetActive(false)
|
||||
self._mapNode.blurBg.gameObject:SetActive(false)
|
||||
self._mapNode.btnBg.gameObject:SetActive(false)
|
||||
end
|
||||
function TutorialDiscSkillActiveCtrl:OnEvent_Reopen(sName)
|
||||
if sName ~= "TutorialDiscSkillActiveCtrl" then
|
||||
return
|
||||
end
|
||||
if self.bDepotOpen then
|
||||
self.bDepotOpen = false
|
||||
self:ReopenPanel()
|
||||
end
|
||||
end
|
||||
return TutorialDiscSkillActiveCtrl
|
||||
Reference in New Issue
Block a user