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:
SL1900
2025-12-03 01:00:00 +09:00
commit 5e0d58cfad
3595 changed files with 9373562 additions and 0 deletions
@@ -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