Files
StellaSora_DataLua/lua/game/ui/startower/npcaffinitylevelup/npcfavorlevelupctrl.lua
T
SL1900 5e0d58cfad 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
2025-12-03 01:00:00 +09:00

152 lines
4.6 KiB
Lua

local BaseCtrl = require("GameCore.UI.BaseCtrl")
local NPCFavorLevelUpCtrl = class("NPCFavorLevelUpCtrl", BaseCtrl)
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
NPCFavorLevelUpCtrl._mapNodeConfig = {
trActor2D_PNG = {
sNodeName = "----Actor2D_PNG----",
sComponentName = "Transform"
},
aniActor2D_PNG = {
sNodeName = "----Actor2D_PNG----",
sComponentName = "Animator"
},
got_fullscreen_blur_black = {
sNodeName = "t_fullscreen_blur_black",
sComponentName = "GameObject"
},
btnsnapshot = {
sNodeName = "snapshot",
sComponentName = "Button",
callback = "OnBtn_ClickClose"
},
rtBg = {
sNodeName = "goBg",
sComponentName = "RectTransform"
},
goLevelUp = {},
TMPRewardTitle = {
sComponentName = "TMP_Text",
sLanguageId = "NPCFavor_LevelUp_RewardTitle"
},
affinityLevel = {
sCtrlName = "Game.UI.StarTower.NpcAffinityLevelUp.TemplateAffinityLevelCtrl"
},
affinityLevelBefore = {
sCtrlName = "Game.UI.StarTower.NpcAffinityLevelUp.TemplateAffinityLevelCtrl"
},
trContent = {
sNodeName = "--Content--",
sComponentName = "RectTransform"
},
btnSkipAnim = {
sNodeName = "btnSkipAnim",
sComponentName = "UIButton",
callback = "OnBtn_SkipAnim"
},
aniSafeRoot = {
sNodeName = "----SafeRoot----",
sComponentName = "Animator"
},
goSafeRoot = {
sNodeName = "----SafeRoot----",
sComponentName = "GameObject"
},
rtItem = {
sNodeName = "tc_item_",
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl",
nCount = 3
},
btnItem = {
sComponentName = "UIButton",
nCount = 3,
callback = "OnBtn_ClickItem"
}
}
NPCFavorLevelUpCtrl._mapEventConfig = {}
function NPCFavorLevelUpCtrl:Awake()
end
function NPCFavorLevelUpCtrl:OnEnable()
local tbParam = self:GetPanelParam()
self.tbLevelUpList = tbParam[1]
self.closeCallback = tbParam[2]
self._mapNode.got_fullscreen_blur_black:SetActive(true)
self:RefreshPanel()
end
function NPCFavorLevelUpCtrl:RefreshPanel(bNext)
if bNext == nil then
end
if self.tbLevelUpList ~= nil and #self.tbLevelUpList > 0 then
local data = table.remove(self.tbLevelUpList, 1)
self.curNPCId = data.NPCId
self.affinityLevel = data.affinityLevel
self.affinityLevelBefore = data.affinityLevelBefore
self.tbItem = data.Items
end
self._mapNode.aniSafeRoot.speed = 1
self._mapNode.aniActor2D_PNG.speed = 1
self._mapNode.goSafeRoot:SetActive(true)
CS.WwiseAudioManager.Instance:PostEvent("ui_charInfo_favour_up")
local nSkinId = ConfigTable.GetData("StarTowerNPC", self.curNPCId).NPCSkin
if not bNext then
self._mapNode.aniSafeRoot:Play("NpcFavourLevelUpPanel_in")
else
self._mapNode.aniSafeRoot:Play("NpcFavourLevelUpPanel_Next_in")
end
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
Actor2DManager.SetBoardNPC2D_PNG(self._mapNode.trActor2D_PNG, PanelId.NPCAffinityLevelUp, self.curNPCId, nSkinId)
if not bNext then
self._mapNode.aniActor2D_PNG:Play("Actor2D_PNG_NpcFavour")
else
self._mapNode.aniActor2D_PNG:Play("Actor2D_PNG_NpcFavour_in")
end
end
cs_coroutine.start(wait)
self._mapNode.affinityLevel:SetInfo(self.affinityLevel, self.curNPCId)
self._mapNode.affinityLevelBefore:SetInfo(self.affinityLevelBefore, self.curNPCId)
for i = 1, 3 do
if self.tbItem[i] ~= nil then
self._mapNode.btnItem[i].gameObject:SetActive(true)
self._mapNode.rtItem[i]:SetItem(self.tbItem[i].Tid, nil, self.tbItem[i].Qty)
else
self._mapNode.btnItem[i].gameObject:SetActive(false)
end
end
self._mapNode.btnSkipAnim.gameObject:SetActive(true)
end
function NPCFavorLevelUpCtrl:OnBtn_SkipAnim()
self._mapNode.aniSafeRoot.speed = 1000
self._mapNode.aniActor2D_PNG.speed = 1000
self._mapNode.btnSkipAnim.gameObject:SetActive(false)
end
function NPCFavorLevelUpCtrl:OnBtn_ClickClose()
if self.bClose == true then
return
end
if self.tbLevelUpList ~= nil and #self.tbLevelUpList > 0 then
self:RefreshPanel(true)
return
end
self.bClose = true
local WaitAnim = function()
if self.closeCallback ~= nil then
self.closeCallback()
end
EventManager.Hit(EventId.ClosePanel, PanelId.NPCAffinityLevelUp)
end
self._mapNode.aniSafeRoot.speed = 1
self._mapNode.aniActor2D_PNG.speed = 1
self._mapNode.aniActor2D_PNG:Play("Actor2D_PNG_NpcFavour_Out")
self._mapNode.aniSafeRoot:Play("NpcFavourLevelUpPanel_Next_out")
EventManager.Hit(EventId.TemporaryBlockInput, 0.35)
self:AddTimer(1, 0.35, WaitAnim, true, true, true)
end
function NPCFavorLevelUpCtrl:OnBtn_ClickItem(btn, nIdx)
if self.tbItem[nIdx] == nil then
return
end
UTILS.ClickItemGridWithTips(self.tbItem[nIdx].Tid, btn.transform, false, true, false)
end
return NPCFavorLevelUpCtrl