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,36 @@
|
||||
local DiscNoteSkillItemCtrl = class("DiscNoteSkillItemCtrl", BaseCtrl)
|
||||
DiscNoteSkillItemCtrl._mapNodeConfig = {
|
||||
imgIcon = {sComponentName = "Image"},
|
||||
txtName = {sComponentName = "TMP_Text"},
|
||||
txtDesc = {sComponentName = "TMP_Text"},
|
||||
txtLastLevel = {sComponentName = "TMP_Text"},
|
||||
txtCurLevel = {sComponentName = "TMP_Text"},
|
||||
imgCritical = {},
|
||||
txtCritical = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Disc_Skill_Active_Critical_Text"
|
||||
}
|
||||
}
|
||||
DiscNoteSkillItemCtrl._mapEventConfig = {}
|
||||
DiscNoteSkillItemCtrl._mapRedDotConfig = {}
|
||||
function DiscNoteSkillItemCtrl:Awake()
|
||||
end
|
||||
function DiscNoteSkillItemCtrl:OnEnable()
|
||||
end
|
||||
function DiscNoteSkillItemCtrl:OnDisable()
|
||||
end
|
||||
function DiscNoteSkillItemCtrl:OnDestroy()
|
||||
end
|
||||
function DiscNoteSkillItemCtrl:SetSkillItem(nNoteId, nCurLevel, nLastLevel, bLucky)
|
||||
local mapCfg = ConfigTable.GetData("SubNoteSkill", nNoteId)
|
||||
if mapCfg ~= nil then
|
||||
self:SetPngSprite(self._mapNode.imgIcon, mapCfg.Icon)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtName, mapCfg.Name)
|
||||
local sDesc = UTILS.ParseDesc(mapCfg, nil, nil, false, nCurLevel)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtDesc, sDesc)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLastLevel, orderedFormat(ConfigTable.GetUIText("StarTower_Depot_Note_Tips_Skill_Lv"), nLastLevel))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCurLevel, orderedFormat(ConfigTable.GetUIText("StarTower_Depot_Note_Tips_Skill_Lv"), nCurLevel))
|
||||
self._mapNode.imgCritical.gameObject:SetActive(bLucky)
|
||||
end
|
||||
end
|
||||
return DiscNoteSkillItemCtrl
|
||||
@@ -0,0 +1,394 @@
|
||||
local DiscSkillActiveCtrl = class("DiscSkillActiveCtrl", BaseCtrl)
|
||||
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
||||
local WwiseManger = CS.WwiseAudioManager.Instance
|
||||
DiscSkillActiveCtrl._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 = {},
|
||||
noteListSv = {sComponentName = "ScrollRect"},
|
||||
goNoteItem = {},
|
||||
noteContent = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
btnNoteList = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_BtnBg"
|
||||
},
|
||||
goSkillList = {},
|
||||
skillListSv = {sComponentName = "ScrollRect"},
|
||||
goSkillItem = {},
|
||||
skillContent = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
btnSkillList = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_BtnBg"
|
||||
},
|
||||
goSkillCard = {},
|
||||
goNoteCardItem = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateDiscSkillCardCtrl"
|
||||
},
|
||||
ScrollView = {
|
||||
sComponentName = "GamepadScroll"
|
||||
},
|
||||
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"
|
||||
}
|
||||
}
|
||||
DiscSkillActiveCtrl._mapEventConfig = {
|
||||
StarTowerShowDiscSkill = "OnEvent_ShowDiscSkillActive",
|
||||
OpenNoteDepot = "OnEvent_OpenNoteDepot",
|
||||
GamepadUIReopen = "OnEvent_Reopen",
|
||||
StarTowerDiscTips = "OnEvent_StarTowerDiscTips"
|
||||
}
|
||||
DiscSkillActiveCtrl._mapRedDotConfig = {}
|
||||
local panel_stage_note = 1
|
||||
local panel_stage_skill = 2
|
||||
local panel_stage_skill_upgrade = 3
|
||||
function DiscSkillActiveCtrl:InitNoteSkillList()
|
||||
for k, v in ipairs(self._mapNode.imgNote) do
|
||||
v.gameObject:SetActive(self._panel.tbShowNote[k] ~= nil)
|
||||
if self._panel.tbShowNote[k] ~= nil then
|
||||
local mapNoteCfg = ConfigTable.GetData("SubNoteSkill", self._panel.tbShowNote[k])
|
||||
if nil ~= mapNoteCfg then
|
||||
self:SetPngSprite(v, mapNoteCfg.Icon .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function DiscSkillActiveCtrl: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("DiscSkillActiveCtrl", 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)
|
||||
NovaAPI.SetVerticalNormalizedPosition(self._mapNode.noteListSv, 1)
|
||||
NovaAPI.SetVerticalNormalizedPosition(self._mapNode.skillListSv, 1)
|
||||
WwiseManger:PlaySound("ui_roguelike_phonograph_mus")
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function DiscSkillActiveCtrl:RefreshAllNoteList(tbNoteChange)
|
||||
for k, v in ipairs(self._mapNode.imgNote) do
|
||||
local nNoteId = self._panel.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 DiscSkillActiveCtrl: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")
|
||||
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 DiscSkillActiveCtrl: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, v.bActive)
|
||||
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 DiscSkillActiveCtrl: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)
|
||||
NovaAPI.SetComponentEnable(self._mapNode.ScrollView, 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)
|
||||
end
|
||||
end
|
||||
end
|
||||
function DiscSkillActiveCtrl:HidePanel()
|
||||
self.bOpen = false
|
||||
GamepadUIManager.DisableGamepadUI("DiscSkillActiveCtrl")
|
||||
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
|
||||
end
|
||||
function DiscSkillActiveCtrl: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 DiscSkillActiveCtrl: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()
|
||||
end
|
||||
function DiscSkillActiveCtrl:OnEnable()
|
||||
self.nPanelStage = 0
|
||||
self:InitNoteSkillList()
|
||||
end
|
||||
function DiscSkillActiveCtrl: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 DiscSkillActiveCtrl: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 DiscSkillActiveCtrl: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 DiscSkillActiveCtrl:OnEvent_ShowDiscSkillActive(tbParam, tbNoteList, callback)
|
||||
self.tbParam = tbParam
|
||||
self.tbNoteList = tbNoteList
|
||||
self.tbSkillActive = tbParam.tbDiscSkillAct
|
||||
self:ShowNoteList(tbParam, callback)
|
||||
end
|
||||
function DiscSkillActiveCtrl:OnEvent_StarTowerDiscTips(tbTips)
|
||||
self._mapNode.Tips.gameObject:SetActive(true)
|
||||
self._mapNode.Tips:StartShowTips(tbTips)
|
||||
end
|
||||
function DiscSkillActiveCtrl: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 DiscSkillActiveCtrl:OnEvent_Reopen(sName)
|
||||
if sName ~= "DiscSkillActiveCtrl" then
|
||||
return
|
||||
end
|
||||
if self.bDepotOpen then
|
||||
self.bDepotOpen = false
|
||||
self:ReopenPanel()
|
||||
end
|
||||
end
|
||||
return DiscSkillActiveCtrl
|
||||
@@ -0,0 +1,93 @@
|
||||
local DiscSkillItemCtrl = class("DiscSkillItemCtrl", BaseCtrl)
|
||||
DiscSkillItemCtrl._mapNodeConfig = {
|
||||
btnSkillItem = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_SkillItem"
|
||||
},
|
||||
imgIconBg = {sComponentName = "Image"},
|
||||
imgIcon = {sComponentName = "Image"},
|
||||
txtName = {sComponentName = "TMP_Text"},
|
||||
txtLevel = {sComponentName = "TMP_Text"},
|
||||
goSkillNote = {nCount = 3, sComponentName = "Image"},
|
||||
imgSkillNote = {nCount = 3, sComponentName = "Image"},
|
||||
animSkillNote = {
|
||||
nCount = 3,
|
||||
sNodeName = "goSkillNote",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
txtNoteCount = {nCount = 3, sComponentName = "TMP_Text"}
|
||||
}
|
||||
DiscSkillItemCtrl._mapEventConfig = {}
|
||||
DiscSkillItemCtrl._mapRedDotConfig = {}
|
||||
function DiscSkillItemCtrl:Awake()
|
||||
end
|
||||
function DiscSkillItemCtrl:OnEnable()
|
||||
end
|
||||
function DiscSkillItemCtrl:OnDisable()
|
||||
end
|
||||
function DiscSkillItemCtrl:OnDestroy()
|
||||
end
|
||||
function DiscSkillItemCtrl:SetSkillItem(nSkillId, tbChangeNote, tbNoteList, bActive)
|
||||
self.tbPlayAnim = {}
|
||||
self.nSkillId = nSkillId
|
||||
local mapCfg = ConfigTable.GetData("SecondarySkill", nSkillId)
|
||||
if mapCfg ~= nil then
|
||||
self:SetPngSprite(self._mapNode.imgIconBg, mapCfg.IconBg)
|
||||
self:SetPngSprite(self._mapNode.imgIcon, mapCfg.Icon)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtName, mapCfg.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLevel, ConfigTable.GetUIText("Skill_Level") .. mapCfg.Level)
|
||||
local tbActiveNote = decodeJson(mapCfg.NeedSubNoteSkills)
|
||||
local tbGroup = CacheTable.GetData("_SecondarySkill", mapCfg.GroupId)
|
||||
local maxLevel = #tbGroup
|
||||
local bMax = maxLevel <= mapCfg.Level
|
||||
if not bMax and bActive then
|
||||
local nNextSkillId = nSkillId + 1
|
||||
local mapNextCfg = ConfigTable.GetData("SecondarySkill", nNextSkillId)
|
||||
if mapNextCfg ~= nil then
|
||||
tbActiveNote = decodeJson(mapNextCfg.NeedSubNoteSkills)
|
||||
end
|
||||
elseif not bActive and mapCfg.Level == 1 then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLevel, ConfigTable.GetUIText("StarTower_Depot_DiscSkill_NotActivated"))
|
||||
end
|
||||
for _, v in ipairs(self._mapNode.goSkillNote) do
|
||||
v.gameObject:SetActive(false)
|
||||
end
|
||||
local nIndex = 1
|
||||
for k, v in pairs(tbActiveNote) do
|
||||
local nNoteId = tonumber(k)
|
||||
local nNoteCount = tonumber(v)
|
||||
self._mapNode.goSkillNote[nIndex].gameObject:SetActive(true)
|
||||
local mapNoteCfg = ConfigTable.GetData("SubNoteSkill", nNoteId)
|
||||
if mapNoteCfg ~= nil then
|
||||
self:SetPngSprite(self._mapNode.goSkillNote[nIndex], mapNoteCfg.Icon .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
self:SetPngSprite(self._mapNode.imgSkillNote[nIndex], mapNoteCfg.Icon .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
local sLevelStr = "StarTower_Depot_Note_Change_1"
|
||||
self.tbPlayAnim[nIndex] = tbChangeNote[nNoteId] ~= nil
|
||||
local nCurCount = tbNoteList[nNoteId] or 0
|
||||
if tbChangeNote[nNoteId] ~= nil then
|
||||
if nNoteCount > nCurCount then
|
||||
sLevelStr = "StarTower_Depot_Note_Change_2"
|
||||
else
|
||||
sLevelStr = "StarTower_Depot_Note_Change_3"
|
||||
end
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtNoteCount[nIndex], orderedFormat(ConfigTable.GetUIText(sLevelStr), nCurCount, nNoteCount))
|
||||
end
|
||||
nIndex = nIndex + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
function DiscSkillItemCtrl:PlayAnim()
|
||||
for k, v in ipairs(self._mapNode.animSkillNote) do
|
||||
if self.tbPlayAnim[k] then
|
||||
v:Play("imgSkillNote_in", 0, 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
function DiscSkillItemCtrl:OnBtnClick_SkillItem(btn)
|
||||
local mapData = {
|
||||
nSkillId = self.nSkillId
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.DiscSkillTips, btn.transform, mapData)
|
||||
end
|
||||
return DiscSkillItemCtrl
|
||||
@@ -0,0 +1,68 @@
|
||||
local StarTowerAffinityTipsItem = class("StarTowerAffinityTipsItem", BaseCtrl)
|
||||
StarTowerAffinityTipsItem._mapNodeConfig = {
|
||||
imgBg = {sComponentName = "Image"},
|
||||
itemTr = {
|
||||
sNodeName = "imgBg",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
canvasGroup = {
|
||||
sNodeName = "imgBg",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
imgItemIcon = {
|
||||
sNodeName = "img_ItemIcon",
|
||||
sComponentName = "Image"
|
||||
},
|
||||
itemIconTr = {
|
||||
sNodeName = "img_ItemIcon",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
txtItemName = {
|
||||
sNodeName = "txt_ItemName",
|
||||
sComponentName = "TMP_Text"
|
||||
}
|
||||
}
|
||||
StarTowerAffinityTipsItem._mapEventConfig = {}
|
||||
function StarTowerAffinityTipsItem:Show(nNpcId, nAffinity)
|
||||
local mapNpcCfg = ConfigTable.GetData("StarTowerNPC", nNpcId)
|
||||
self:SetPngSprite(self._mapNode.imgBg, "UI/big_sprites/rare_vestige_obtain_6")
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgBg)
|
||||
if nAffinity == 0 then
|
||||
self:SetAtlasSprite(self._mapNode.imgItemIcon, "10_ico", "icon_favorability_01")
|
||||
self._mapNode.itemIconTr.localScale = Vector3.one
|
||||
NovaAPI.SetTMPText(self._mapNode.txtItemName, ConfigTable.GetUIText("StarTowerNPCAffinity_MaxCount"))
|
||||
else
|
||||
if mapNpcCfg ~= nil then
|
||||
self:SetPngSprite(self._mapNode.imgItemIcon, mapNpcCfg.Head)
|
||||
self._mapNode.itemIconTr.localScale = Vector3.one * 0.25
|
||||
self._mapNode.itemIconTr.anchoredPosition = Vector2(38.8, 4.3)
|
||||
else
|
||||
self:SetAtlasSprite(self._mapNode.imgItemIcon, "10_ico", "icon_favorability_01")
|
||||
self._mapNode.itemIconTr.localScale = Vector3.one
|
||||
self._mapNode.itemIconTr.anchoredPosition = Vector2(36.3, 0)
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtItemName, orderedFormat(ConfigTable.GetUIText("StarTowerNPCAffinity_Increase"), nAffinity))
|
||||
end
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgItemIcon)
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.canvasGroup, 0)
|
||||
self._mapNode.itemTr.anchoredPosition = Vector2(0, 0)
|
||||
local nInAnimLen = NovaAPI.GetAnimClipLength(self.animRoot, {
|
||||
"TemplateTip_in"
|
||||
})
|
||||
self:AddTimer(1, nInAnimLen + 1, function()
|
||||
self:OnTipItemHide()
|
||||
end, true, true, true, nil)
|
||||
end
|
||||
function StarTowerAffinityTipsItem:OnTipItemHide()
|
||||
local nInAnimLen = NovaAPI.GetAnimClipLength(self.animRoot, {
|
||||
"TemplateTip_out"
|
||||
})
|
||||
self.animRoot:Play("TemplateTip_out")
|
||||
self:AddTimer(1, nInAnimLen, function()
|
||||
EventManager.Hit("StarTowerTipsShowEnd", self, AllEnum.StarTowerTipsType.NPCAffinity)
|
||||
end, true, true, true, nil)
|
||||
end
|
||||
function StarTowerAffinityTipsItem:Awake()
|
||||
self.animRoot = self.gameObject:GetComponent("Animator")
|
||||
end
|
||||
return StarTowerAffinityTipsItem
|
||||
@@ -0,0 +1,47 @@
|
||||
local StarTowerDiscTipsItem = class("StarTowerDiscTipsItem", BaseCtrl)
|
||||
StarTowerDiscTipsItem._mapNodeConfig = {
|
||||
itemTr = {
|
||||
sNodeName = "imgBg",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
canvasGroup = {
|
||||
sNodeName = "imgBg",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
imgDiscIcon = {sComponentName = "Image"},
|
||||
imgSkillIcon = {sComponentName = "Image"},
|
||||
txtDisc = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
StarTowerDiscTipsItem._mapEventConfig = {}
|
||||
function StarTowerDiscTipsItem:Show(nSkillId)
|
||||
local mapSkillCfg
|
||||
mapSkillCfg = ConfigTable.GetData("SecondarySkill", nSkillId)
|
||||
if mapSkillCfg == nil then
|
||||
return
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtDisc, orderedFormat(ConfigTable.GetUIText("StarTower_DiscTips"), mapSkillCfg.Name))
|
||||
self:SetPngSprite(self._mapNode.imgDiscIcon, mapSkillCfg.IconBg)
|
||||
self:SetPngSprite(self._mapNode.imgSkillIcon, mapSkillCfg.Icon)
|
||||
self._mapNode.itemTr.anchoredPosition = Vector2(0, 0)
|
||||
local nInAnimLen = NovaAPI.GetAnimClipLength(self.animRoot, {
|
||||
"TemplateTip_in"
|
||||
})
|
||||
self.animRoot:Play("TemplateTip_in", 0, 0)
|
||||
self:AddTimer(1, nInAnimLen + 1, function()
|
||||
local handleTweener = self._mapNode.itemTr:DOAnchorPosY(60, 0.2):SetUpdate(true)
|
||||
handleTweener.onComplete = dotween_callback_handler(self, self.OnTipItemHide)
|
||||
end, true, true, true, nil)
|
||||
end
|
||||
function StarTowerDiscTipsItem:OnTipItemHide()
|
||||
local nInAnimLen = NovaAPI.GetAnimClipLength(self.animRoot, {
|
||||
"TemplateTip_out"
|
||||
})
|
||||
self.animRoot:Play("TemplateTip_out", 0, 0)
|
||||
self:AddTimer(1, nInAnimLen, function()
|
||||
EventManager.Hit("StarTowerTipsShowEnd", self, AllEnum.StarTowerTipsType.DiscTip)
|
||||
end, true, true, true, nil)
|
||||
end
|
||||
function StarTowerDiscTipsItem:Awake()
|
||||
self.animRoot = self.gameObject:GetComponent("Animator")
|
||||
end
|
||||
return StarTowerDiscTipsItem
|
||||
@@ -0,0 +1,47 @@
|
||||
local StarTowerFateCardTipsItem = class("StarTowerFateCardTipsItem", BaseCtrl)
|
||||
StarTowerFateCardTipsItem._mapNodeConfig = {
|
||||
itemTr = {
|
||||
sNodeName = "imgBg",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
imgFrame = {
|
||||
sNodeName = "imgSkillFrame",
|
||||
sComponentName = "Image"
|
||||
},
|
||||
imgSkillIcon = {
|
||||
sNodeName = "imgSkillIcon",
|
||||
sComponentName = "Image"
|
||||
},
|
||||
txtFateCard = {sComponentName = "TMP_Text"},
|
||||
imgBg = {sComponentName = "Image"}
|
||||
}
|
||||
StarTowerFateCardTipsItem._mapEventConfig = {}
|
||||
function StarTowerFateCardTipsItem:Show(nFateCardId)
|
||||
local fateCardCfg = ConfigTable.GetData_Item(nFateCardId)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtFateCard, orderedFormat(ConfigTable.GetUIText("StarTower_FateCard_Tips_1") or "", fateCardCfg.Title))
|
||||
self:SetPngSprite(self._mapNode.imgSkillIcon, fateCardCfg.Icon2)
|
||||
self:SetSprite_FrameColor(self._mapNode.imgBg, fateCardCfg.Rarity, "rare_vestige_obtain_", true)
|
||||
local sFrame = AllEnum.FrameType_New.FateCardS .. fateCardCfg.Rarity
|
||||
self:SetAtlasSprite(self._mapNode.imgFrame, "12_rare", sFrame)
|
||||
self._mapNode.itemTr.anchoredPosition = Vector2(0, 0)
|
||||
local nInAnimLen = NovaAPI.GetAnimClipLength(self.animRoot, {
|
||||
"TemplateTip_in"
|
||||
})
|
||||
self:AddTimer(1, nInAnimLen + 1, function()
|
||||
local handleTweener = self._mapNode.itemTr:DOAnchorPosY(60, 0.2):SetUpdate(true)
|
||||
handleTweener.onComplete = dotween_callback_handler(self, self.OnTipItemHide)
|
||||
end, true, true, true, nil)
|
||||
end
|
||||
function StarTowerFateCardTipsItem:OnTipItemHide()
|
||||
local nInAnimLen = NovaAPI.GetAnimClipLength(self.animRoot, {
|
||||
"TemplateTip_out"
|
||||
})
|
||||
self.animRoot:Play("TemplateTip_out")
|
||||
self:AddTimer(1, nInAnimLen, function()
|
||||
EventManager.Hit("StarTowerTipsShowEnd", self, AllEnum.StarTowerTipsType.FateCardTip)
|
||||
end, true, true, true, nil)
|
||||
end
|
||||
function StarTowerFateCardTipsItem:Awake()
|
||||
self.animRoot = self.gameObject:GetComponent("Animator")
|
||||
end
|
||||
return StarTowerFateCardTipsItem
|
||||
@@ -0,0 +1,53 @@
|
||||
local StarTowerItemTipsItem = class("StarTowerItemTipsItem", BaseCtrl)
|
||||
StarTowerItemTipsItem._mapNodeConfig = {
|
||||
imgBg = {sComponentName = "Image"},
|
||||
itemTr = {
|
||||
sNodeName = "imgBg",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
canvasGroup = {
|
||||
sNodeName = "imgBg",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
imgItemIcon = {
|
||||
sNodeName = "img_ItemIcon",
|
||||
sComponentName = "Image"
|
||||
},
|
||||
txtItemName = {
|
||||
sNodeName = "txt_ItemName",
|
||||
sComponentName = "TMP_Text"
|
||||
}
|
||||
}
|
||||
StarTowerItemTipsItem._mapEventConfig = {}
|
||||
function StarTowerItemTipsItem:Show(nTid, nCount)
|
||||
local mapItemCfg = ConfigTable.GetData_Item(nTid)
|
||||
self:SetSprite_FrameColor(self._mapNode.imgBg, mapItemCfg.Rarity, "rare_vestige_obtain_", true)
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgBg)
|
||||
if mapItemCfg.Type == GameEnum.itemType.Disc then
|
||||
self:SetPngSprite(self._mapNode.imgItemIcon, mapItemCfg.Icon .. AllEnum.OutfitIconSurfix.Item)
|
||||
else
|
||||
self:SetPngSprite(self._mapNode.imgItemIcon, mapItemCfg.Icon)
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtItemName, string.format("[%s]", mapItemCfg.Title) .. "×" .. nCount)
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.canvasGroup, 0)
|
||||
self._mapNode.itemTr.anchoredPosition = Vector2(0, 0)
|
||||
local nInAnimLen = NovaAPI.GetAnimClipLength(self.animRoot, {
|
||||
"TemplateTip_in"
|
||||
})
|
||||
self:AddTimer(1, nInAnimLen + 1, function()
|
||||
self:OnTipItemHide()
|
||||
end, true, true, true, nil)
|
||||
end
|
||||
function StarTowerItemTipsItem:OnTipItemHide()
|
||||
local nInAnimLen = NovaAPI.GetAnimClipLength(self.animRoot, {
|
||||
"TemplateTip_out"
|
||||
})
|
||||
self.animRoot:Play("TemplateTip_out")
|
||||
self:AddTimer(1, nInAnimLen, function()
|
||||
EventManager.Hit("StarTowerTipsShowEnd", self, AllEnum.StarTowerTipsType.ItemTip)
|
||||
end, true, true, true, nil)
|
||||
end
|
||||
function StarTowerItemTipsItem:Awake()
|
||||
self.animRoot = self.gameObject:GetComponent("Animator")
|
||||
end
|
||||
return StarTowerItemTipsItem
|
||||
@@ -0,0 +1,46 @@
|
||||
local StarTowerNoteTipsItem = class("StarTowerNoteTipsItem", BaseCtrl)
|
||||
StarTowerNoteTipsItem._mapNodeConfig = {
|
||||
itemTr = {
|
||||
sNodeName = "imgBg",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
canvasGroup = {
|
||||
sNodeName = "imgBg",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
imgNoteIcon = {sComponentName = "Image"},
|
||||
txtNote = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
StarTowerNoteTipsItem._mapEventConfig = {}
|
||||
function StarTowerNoteTipsItem:Show(nNoteId, nCount)
|
||||
local mapNoteCfg = ConfigTable.GetData("SubNoteSkill", nNoteId)
|
||||
if mapNoteCfg == nil then
|
||||
return
|
||||
end
|
||||
local sName = mapNoteCfg.Name
|
||||
local sTip = orderedFormat(ConfigTable.GetUIText("StarTower_Note_Reduce_Tip") or "", math.abs(nCount), sName)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtNote, sTip)
|
||||
self:SetPngSprite(self._mapNode.imgNoteIcon, mapNoteCfg.Icon)
|
||||
self._mapNode.itemTr.anchoredPosition = Vector2(0, 0)
|
||||
local nInAnimLen = NovaAPI.GetAnimClipLength(self.animRoot, {
|
||||
"TemplateTip_in"
|
||||
})
|
||||
self.animRoot:Play("TemplateTip_in", 0, 0)
|
||||
self:AddTimer(1, nInAnimLen + 1, function()
|
||||
local handleTweener = self._mapNode.itemTr:DOAnchorPosY(60, 0.2):SetUpdate(true)
|
||||
handleTweener.onComplete = dotween_callback_handler(self, self.OnTipItemHide)
|
||||
end, true, true, true, nil)
|
||||
end
|
||||
function StarTowerNoteTipsItem:OnTipItemHide()
|
||||
local nInAnimLen = NovaAPI.GetAnimClipLength(self.animRoot, {
|
||||
"TemplateTip_out"
|
||||
})
|
||||
self.animRoot:Play("TemplateTip_out", 0, 0)
|
||||
self:AddTimer(1, nInAnimLen, function()
|
||||
EventManager.Hit("StarTowerTipsShowEnd", self, AllEnum.StarTowerTipsType.NoteTip)
|
||||
end, true, true, true, nil)
|
||||
end
|
||||
function StarTowerNoteTipsItem:Awake()
|
||||
self.animRoot = self.gameObject:GetComponent("Animator")
|
||||
end
|
||||
return StarTowerNoteTipsItem
|
||||
@@ -0,0 +1,170 @@
|
||||
local StarTowerTipsCtrl = class("StarTowerTipsCtrl", BaseCtrl)
|
||||
StarTowerTipsCtrl._mapNodeConfig = {
|
||||
tr_TipContent = {sComponentName = "Transform"},
|
||||
TipPool = {sComponentName = "Transform"},
|
||||
TemplateDiscTip = {sComponentName = "GameObject"},
|
||||
TemplateItemTip = {sComponentName = "GameObject"},
|
||||
TemplateFateCardTip = {sComponentName = "GameObject"},
|
||||
TemplateNoteTip = {sComponentName = "GameObject"}
|
||||
}
|
||||
StarTowerTipsCtrl._mapEventConfig = {
|
||||
StarTowerBattleRewardTips = "OnEvent_ShowTips",
|
||||
StarTowerTipsShowEnd = "OnEvent_TipsShowEnd"
|
||||
}
|
||||
StarTowerTipsCtrl._mapRedDotConfig = {}
|
||||
function StarTowerTipsCtrl:GetItem(nTipType)
|
||||
local TipItem
|
||||
if nTipType == AllEnum.StarTowerTipsType.ItemTip then
|
||||
if #self._tbItemTipPool > 0 then
|
||||
local idx = #self._tbItemTipPool
|
||||
TipItem = self._tbItemTipPool[idx]
|
||||
table.remove(self._tbItemTipPool, idx)
|
||||
TipItem.gameObject.transform:SetParent(self._mapNode.tr_TipContent)
|
||||
return TipItem
|
||||
else
|
||||
local itemObj = instantiate(self._mapNode.TemplateItemTip, self._mapNode.tr_TipContent)
|
||||
itemObj:SetActive(true)
|
||||
TipItem = self:BindCtrlByNode(itemObj, "Game.UI.StarTower.DiscTips.StarTowerItemTipsItem")
|
||||
return TipItem
|
||||
end
|
||||
elseif nTipType == AllEnum.StarTowerTipsType.FateCardTip then
|
||||
if 0 < #self._tbFateCardTipPool then
|
||||
local idx = #self._tbFateCardTipPool
|
||||
TipItem = self._tbFateCardTipPool[idx]
|
||||
table.remove(self._tbFateCardTipPool, idx)
|
||||
TipItem.gameObject.transform:SetParent(self._mapNode.tr_TipContent)
|
||||
return TipItem
|
||||
else
|
||||
local itemObj = instantiate(self._mapNode.TemplateFateCardTip, self._mapNode.tr_TipContent)
|
||||
itemObj:SetActive(true)
|
||||
TipItem = self:BindCtrlByNode(itemObj, "Game.UI.StarTower.DiscTips.StarTowerFateCardTipsItem")
|
||||
return TipItem
|
||||
end
|
||||
elseif nTipType == AllEnum.StarTowerTipsType.DiscTip then
|
||||
if 0 < #self._tbDiscTipPool then
|
||||
local idx = #self._tbDiscTipPool
|
||||
TipItem = self._tbDiscTipPool[idx]
|
||||
table.remove(self._tbDiscTipPool, idx)
|
||||
TipItem.gameObject.transform:SetParent(self._mapNode.tr_TipContent)
|
||||
return TipItem
|
||||
else
|
||||
local itemObj = instantiate(self._mapNode.TemplateDiscTip, self._mapNode.tr_TipContent)
|
||||
itemObj:SetActive(true)
|
||||
TipItem = self:BindCtrlByNode(itemObj, "Game.UI.StarTower.DiscTips.StarTowerDiscTipsItem")
|
||||
return TipItem
|
||||
end
|
||||
elseif nTipType == AllEnum.StarTowerTipsType.NoteTip then
|
||||
if 0 < #self._tbNoteTipPool then
|
||||
local idx = #self._tbNoteTipPool
|
||||
TipItem = self._tbNoteTipPool[idx]
|
||||
table.remove(self._tbNoteTipPool, idx)
|
||||
TipItem.gameObject.transform:SetParent(self._mapNode.tr_TipContent)
|
||||
return TipItem
|
||||
else
|
||||
local itemObj = instantiate(self._mapNode.TemplateNoteTip, self._mapNode.tr_TipContent)
|
||||
itemObj:SetActive(true)
|
||||
TipItem = self:BindCtrlByNode(itemObj, "Game.UI.StarTower.DiscTips.StarTowerNoteTipsItem")
|
||||
return TipItem
|
||||
end
|
||||
elseif nTipType == AllEnum.StarTowerTipsType.NPCAffinity then
|
||||
if 0 < #self._tbAffinityTipPool then
|
||||
local idx = #self._tbAffinityTipPool
|
||||
TipItem = self._tbAffinityTipPool[idx]
|
||||
table.remove(self._tbAffinityTipPool, idx)
|
||||
TipItem.gameObject.transform:SetParent(self._mapNode.tr_TipContent)
|
||||
return TipItem
|
||||
else
|
||||
local itemObj = instantiate(self._mapNode.TemplateItemTip, self._mapNode.tr_TipContent)
|
||||
itemObj:SetActive(true)
|
||||
TipItem = self:BindCtrlByNode(itemObj, "Game.UI.StarTower.DiscTips.StarTowerAffinityTipsItem")
|
||||
return TipItem
|
||||
end
|
||||
end
|
||||
end
|
||||
function StarTowerTipsCtrl:RecycleItem(itemCtrl, nTipType)
|
||||
itemCtrl.gameObject.transform:SetParent(self._mapNode.TipPool)
|
||||
if nTipType == AllEnum.StarTowerTipsType.DiscTip then
|
||||
table.insert(self._tbDiscTipPool, itemCtrl)
|
||||
elseif nTipType == AllEnum.StarTowerTipsType.ItemTip then
|
||||
table.insert(self._tbItemTipPool, itemCtrl)
|
||||
elseif nTipType == AllEnum.StarTowerTipsType.FateCardTip then
|
||||
table.insert(self._tbFateCardTipPool, itemCtrl)
|
||||
elseif nTipType == AllEnum.StarTowerTipsType.NoteTip then
|
||||
table.insert(self._tbNoteTipPool, itemCtrl)
|
||||
elseif nTipType == AllEnum.StarTowerTipsType.NPCAffinity then
|
||||
table.insert(self._tbAffinityTipPool, itemCtrl)
|
||||
end
|
||||
end
|
||||
function StarTowerTipsCtrl:ShowTips()
|
||||
if not self.bPause then
|
||||
local wait = function()
|
||||
local frameCount = 0
|
||||
while #self._tbTipShow < self.nMaxTipsCount and 0 < #self._tbTipsQueue do
|
||||
if 4 <= frameCount then
|
||||
frameCount = 0
|
||||
local tipsInfo = table.remove(self._tbTipsQueue, 1)
|
||||
local tipItem = self:GetItem(tipsInfo.nTipType)
|
||||
tipItem.gameObject:SetActive(true)
|
||||
table.insert(self._tbTipShow, tipItem)
|
||||
if tipsInfo.nTipType == AllEnum.StarTowerTipsType.DiscTip then
|
||||
tipItem:Show(tipsInfo.nSkillId)
|
||||
elseif tipsInfo.nTipType == AllEnum.StarTowerTipsType.ItemTip then
|
||||
tipItem:Show(tipsInfo.nTid, tipsInfo.nCount)
|
||||
elseif tipsInfo.nTipType == AllEnum.StarTowerTipsType.FateCardTip then
|
||||
tipItem:Show(tipsInfo.nFateCardId)
|
||||
elseif tipsInfo.nTipType == AllEnum.StarTowerTipsType.NoteTip then
|
||||
tipItem:Show(tipsInfo.nNoteId, tipsInfo.nCount)
|
||||
elseif tipsInfo.nTipType == AllEnum.StarTowerTipsType.NPCAffinity then
|
||||
tipItem:Show(tipsInfo.nNPCId, tipsInfo.nAffinity)
|
||||
end
|
||||
else
|
||||
frameCount = frameCount + 1
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
end
|
||||
end
|
||||
end
|
||||
self.showTipsCor = cs_coroutine.start(wait)
|
||||
else
|
||||
print("剧情中无法显示物品提示")
|
||||
end
|
||||
end
|
||||
function StarTowerTipsCtrl:Awake()
|
||||
self._mapNode.TemplateDiscTip.gameObject:SetActive(false)
|
||||
self._mapNode.TemplateItemTip.gameObject:SetActive(false)
|
||||
self._mapNode.TemplateFateCardTip.gameObject:SetActive(false)
|
||||
self._mapNode.TemplateNoteTip.gameObject:SetActive(false)
|
||||
self.bPause = false
|
||||
self.nMaxTipsCount = 8
|
||||
self._tbItemTipPool = {}
|
||||
self._tbDiscTipPool = {}
|
||||
self._tbFateCardTipPool = {}
|
||||
self._tbNoteTipPool = {}
|
||||
self._tbAffinityTipPool = {}
|
||||
self._tbTipShow = {}
|
||||
self._tbTipsQueue = {}
|
||||
self.showTipsCor = nil
|
||||
delChildren(self._mapNode.tr_TipContent)
|
||||
end
|
||||
function StarTowerTipsCtrl:OnDisable()
|
||||
if nil ~= self.showTipsCor then
|
||||
cs_coroutine.stop(self.showTipsCor)
|
||||
end
|
||||
self.showTipsCor = nil
|
||||
end
|
||||
function StarTowerTipsCtrl:StartShowTips(tbTips)
|
||||
for _, v in ipairs(tbTips) do
|
||||
table.insert(self._tbTipsQueue, v)
|
||||
end
|
||||
self:ShowTips()
|
||||
end
|
||||
function StarTowerTipsCtrl:OnEvent_TipsShowEnd(itemCtrl, nTipType)
|
||||
if #self._tbTipShow > 0 then
|
||||
local idx = table.indexof(self._tbTipShow, itemCtrl)
|
||||
if idx <= #self._tbTipShow and idx ~= 0 then
|
||||
table.remove(self._tbTipShow, idx)
|
||||
self:RecycleItem(itemCtrl, nTipType)
|
||||
self:ShowTips()
|
||||
end
|
||||
end
|
||||
end
|
||||
return StarTowerTipsCtrl
|
||||
Reference in New Issue
Block a user