Files
SL1900 7363298dc1 Update - 1.15.0.134
EN: 1.15.0.134
CN: 1.15.0.133
JP: 1.15.0.137
KR: 1.15.0.139
2026-09-08 12:00:00 +09:00

163 lines
5.3 KiB
Lua

local PenguinCardAideSlotItemCtrl = class("PenguinCardAideSlotItemCtrl", BaseCtrl)
local WwiseManger = CS.WwiseAudioManager.Instance
local _, NotMaxLevel = ColorUtility.TryParseHtmlString("#FFF7EA")
local _, MaxLevel = ColorUtility.TryParseHtmlString("#ffe075")
PenguinCardAideSlotItemCtrl._mapNodeConfig = {
AnimRoot = {sComponentName = "Animator"},
aniOn = {sNodeName = "goOn", sComponentName = "Animator"},
goOff = {},
imgReady = {},
imgSlotLock = {},
goOn = {},
imgIcon = {sComponentName = "Image"},
txtLevel = {sComponentName = "TMP_Text"},
btnOpenInfo = {
sComponentName = "UIButton",
callback = "OnBtnClick_OpenInfo"
}
}
PenguinCardAideSlotItemCtrl._mapEventConfig = {
PenguinCardAideTriggered = "OnEvent_Triggered",
PenguinCardWaitPlay = "OnEvent_WaitPlay",
PenguinCardAideGrowth = "OnEvent_Growth",
PenguinCard_AuraTriggered = "OnEvent_AuraTriggered"
}
function PenguinCardAideSlotItemCtrl:Refresh(nSlot)
self.nSlot = nSlot
local mapAide = self._panel.mapLevel.tbAide[nSlot]
self.bWaitPlay = false
self._mapNode.goOn:SetActive(mapAide ~= 0)
self._mapNode.goOff:SetActive(mapAide == 0)
NovaAPI.SetButtonInteractable(self._mapNode.btnOpenInfo, mapAide ~= 0)
if mapAide == 0 then
self:RefreshSlot(nSlot)
else
self:RefreshAide(mapAide)
end
end
function PenguinCardAideSlotItemCtrl:RefreshAide(mapAide)
self:SetPngSprite(self._mapNode.imgIcon, mapAide.sIcon .. AllEnum.CharHeadIconSurfix.Q)
if mapAide.nLevel == mapAide.nMaxLevel then
NovaAPI.SetTMPColor(self._mapNode.txtLevel, MaxLevel)
NovaAPI.SetTMPText(self._mapNode.txtLevel, orderedFormat(ConfigTable.GetUIText("PenguinCard_AideLevel"), mapAide.nLevel))
else
NovaAPI.SetTMPColor(self._mapNode.txtLevel, NotMaxLevel)
NovaAPI.SetTMPText(self._mapNode.txtLevel, orderedFormat(ConfigTable.GetUIText("PenguinCard_AideLevel"), mapAide.nLevel))
end
end
function PenguinCardAideSlotItemCtrl:RefreshSlot(nSlot)
self._mapNode.imgSlotLock:SetActive(nSlot > self._panel.mapLevel.nAideLimit)
self._mapNode.imgReady:SetActive(nSlot <= self._panel.mapLevel.nAideLimit)
end
function PenguinCardAideSlotItemCtrl:PlaySelectAni()
self._mapNode.aniOn:Play("PenguinCardAideSlot_goOn_in", 0, 0)
WwiseManger:PostEvent("Mode_Card_appear")
end
function PenguinCardAideSlotItemCtrl:PlayUpgradeAni(callback)
self._mapNode.aniOn:Play("PenguinCardAideSlot_goOn_UP", 0, 0)
WwiseManger:PostEvent("Mode_Card_levelup")
self:AddTimer(1, 0.2, function()
if callback then
callback()
end
end, true, true, true)
end
function PenguinCardAideSlotItemCtrl:PlayGiftAni()
self._mapNode.aniOn:Play("PenguinCardAideSlot_goOn_show", 0, 0)
WwiseManger:PostEvent("Mode_Card_love")
end
function PenguinCardAideSlotItemCtrl:PlaySaleAni(callback)
self._mapNode.AnimRoot:Play("PenguinCardAideSlot_out", 0, 0)
WwiseManger:PostEvent("Mode_Card_giveup")
local nAnimTime = NovaAPI.GetAnimClipLength(self._mapNode.AnimRoot, {
"PenguinCardAideSlot_out"
})
self:AddTimer(1, nAnimTime, function()
if callback then
callback()
end
self._mapNode.AnimRoot:Play("PenguinCardAideSlot_in", 0, 0)
end, true, true, true)
end
function PenguinCardAideSlotItemCtrl:PlaySlotHideAni()
self._mapNode.AnimRoot:Play("PenguinCardAideSlot_out", 0, 0)
end
function PenguinCardAideSlotItemCtrl:PlayUnlockAni()
WwiseManger:PostEvent("Mode_Card_unlock")
self._mapNode.imgSlotLock:SetActive(false)
self._mapNode.imgReady:SetActive(true)
end
function PenguinCardAideSlotItemCtrl:PlayTriggerAni()
if self.bTriggerCd then
self:PlayEffectAni()
return
end
self.bTriggerCd = true
local nAnimTime = NovaAPI.GetAnimClipLength(self._mapNode.AnimRoot, {
"PenguinCardAideSlot_trigger"
})
self:AddTimer(1, nAnimTime, function()
self.bTriggerCd = false
end, true, true, true)
self._mapNode.AnimRoot:Play("PenguinCardAideSlot_trigger", 0, 0)
WwiseManger:PostEvent("Mode_Card_cast")
self:PlayEffectAni()
end
function PenguinCardAideSlotItemCtrl:PlayEffectAni()
end
function PenguinCardAideSlotItemCtrl:Awake()
end
function PenguinCardAideSlotItemCtrl:OnEnable()
end
function PenguinCardAideSlotItemCtrl:OnDisable()
end
function PenguinCardAideSlotItemCtrl:OnBtnClick_OpenInfo()
if not self.nSlot then
return
end
local mapAide = self._panel.mapLevel.tbAide[self.nSlot]
if mapAide == 0 then
return
end
EventManager.Hit("PenguinCard_OpenAideInfo", mapAide)
end
function PenguinCardAideSlotItemCtrl:OnEvent_Triggered(nSlotIndex)
if not self.nSlot then
return
end
local mapAide = self._panel.mapLevel.tbAide[self.nSlot]
if mapAide == 0 or nSlotIndex ~= mapAide.nSlotIndex then
return
end
if mapAide.mapPenguinCard.nTriggerPhase == GameEnum.PenguinCardTriggerPhase.Aura then
return
end
if mapAide.mapPenguinCard.nTriggerPhase == GameEnum.PenguinCardTriggerPhase.Settlement then
self.bWaitPlay = true
return
end
self:PlayTriggerAni()
end
function PenguinCardAideSlotItemCtrl:OnEvent_AuraTriggered()
if not self.nSlot then
return
end
local mapAide = self._panel.mapLevel.tbAide[self.nSlot]
if mapAide == 0 then
return
end
if mapAide.mapPenguinCard.nTriggerPhase ~= GameEnum.PenguinCardTriggerPhase.Aura then
return
end
self:PlayTriggerAni()
end
function PenguinCardAideSlotItemCtrl:OnEvent_Growth(nSlotIndex)
end
function PenguinCardAideSlotItemCtrl:OnEvent_WaitPlay()
if self.bWaitPlay == true then
self.bWaitPlay = false
self:PlayTriggerAni()
end
end
return PenguinCardAideSlotItemCtrl