Files
StellaSora_DataLua/lua/game/ui/gachaex/gachanewbieshowresultctrl.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

180 lines
5.2 KiB
Lua

local GachaNewBieShowResultCtrl = class("GachaNewBieShowResultCtrl", BaseCtrl)
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
GachaNewBieShowResultCtrl._mapNodeConfig = {
Item = {
sCtrlName = "Game.UI.GachaEx.GachaShowResultGrid",
nCount = 10
},
txt_newbie_result_save = {
sComponentName = "TMP_Text",
sLanguageId = "Gacha_NewBieSaveResult"
},
txt_newbie_result_summon = {
sComponentName = "TMP_Text",
sLanguageId = "Gacha_NewBieResultSummonAgain"
},
txt_newbie_result_summon_remain = {
sComponentName = "TMP_Text",
sLanguageId = "Gacha_NewBieRecordResultRemain"
},
txt_newbie_result_record = {
sComponentName = "TMP_Text",
sLanguageId = "Gacha_NewBieRecordResult"
},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
btn_newbie_save = {
sComponentName = "UIButton",
callback = "OnBtnClick_Save"
},
btn_newbie_summon = {
sComponentName = "UIButton",
callback = "OnBtnClick_Summon"
},
btn_newbie_record = {
sComponentName = "UIButton",
callback = "OnBtnClick_Record"
}
}
GachaNewBieShowResultCtrl._mapEventConfig = {
Guide_GachaStart = "OnEvent_Guide_GachaStart"
}
function GachaNewBieShowResultCtrl:Awake()
self.remainCount = -1
end
function GachaNewBieShowResultCtrl:FadeIn()
end
function GachaNewBieShowResultCtrl:FadeOut()
end
function GachaNewBieShowResultCtrl:OnEnable()
self.GuideBlock = false
self.gameObject:SetActive(false)
end
function GachaNewBieShowResultCtrl:OnDisable()
end
function GachaNewBieShowResultCtrl:OnDestroy()
end
function GachaNewBieShowResultCtrl:OnRelease()
end
function GachaNewBieShowResultCtrl:RefreshInfo()
if self.curPoolId == nil then
return
end
local newbie = ConfigTable.GetData("GachaNewbie", self.curPoolId)
if newbie == nil then
return
end
local newbieData = PlayerData.Gacha:GetGachaNewbieData(self.curPoolId)
if newbieData == nil then
return
end
local c = tostring(#newbieData.Cards) .. "/" .. tostring(newbie.SaveCount)
local nTotalCount = newbie.SpinCount
local remainCount = nTotalCount - newbieData.Times
if #newbieData.Temp == 0 or remainCount == 0 then
self._mapNode.btn_newbie_save.gameObject:SetActive(false)
else
self._mapNode.btn_newbie_save.gameObject:SetActive(true)
end
NovaAPI.SetTMPText(self._mapNode.txt_newbie_result_record, orderedFormat(ConfigTable.GetUIText("Gacha_NewBieRecordResult") or "", c))
NovaAPI.SetTMPText(self._mapNode.txt_newbie_result_summon_remain, orderedFormat(ConfigTable.GetUIText("Gacha_NewBieRecordResultRemain") or "", remainCount))
if remainCount <= 0 then
NovaAPI.SetTMPText(self._mapNode.txt_newbie_result_summon, ConfigTable.GetUIText("Gacha_Newbie_BtnShowRecord"))
end
self.remainCount = remainCount
end
function GachaNewBieShowResultCtrl:ShowResult(tbReward, poolId)
self.curPoolId = poolId
WwiseAudioMgr:PlaySound("ui_recuit_gacha_result")
self:RefreshInfo()
self.curStep = 1
local nDelayTime = 0
self.hasSSR = false
for i = 1, 10 do
if tbReward[i] ~= nil then
self._mapNode.Item[i].gameObject:SetActive(true)
local itemTime = self._mapNode.Item[i]:Refresh(tbReward[i].id, tbReward[i].bNew, nDelayTime)
local mapItemCfg = ConfigTable.GetData_Item(tbReward[i].id)
nDelayTime = nDelayTime + itemTime
if mapItemCfg ~= nil and mapItemCfg.Rarity == GameEnum.itemRarity.SSR then
self.hasSSR = true
end
else
self._mapNode.Item[i].gameObject:SetActive(false)
end
end
local AllCardShowCallback = function()
self.curStep = 2
self.delayTimer = nil
for i = 1, 10 do
self._mapNode.Item[i]:ShowAllCardEnd()
end
EventManager.Hit("Guide_GachaFinish")
self:BlockJump(0.5)
end
self.delayTimer = self:AddTimer(1, nDelayTime, AllCardShowCallback, true, true, nil, nil)
end
function GachaNewBieShowResultCtrl:BlockJump(nTime)
self.bBlockJump = true
local unBlockJump = function()
self.bBlockJump = false
end
self:AddTimer(1, nTime, unBlockJump, true, true, nil, nil)
end
function GachaNewBieShowResultCtrl:OnBtnClick_Close()
if self.bBlockJump then
return
end
if self.curStep == 1 then
for i = 1, 10 do
self._mapNode.Item[i]:JumpDelay()
end
if self.delayTimer ~= nil then
self.delayTimer:Cancel(true)
end
else
self.gameObject:SetActive(false)
WwiseAudioMgr:SetState("recruit_rarity", "None")
for i = 1, 10 do
self._mapNode.Item[i].gameObject:SetActive(false)
end
PlayerData.Item:TryOpenFragmentsOverflow(function()
PlayerData.Phone:CheckNewChat()
end)
end
end
function GachaNewBieShowResultCtrl:OnBtnClick_Save()
if self.GuideBlock then
return
end
EventManager.Hit("GachaNewbieSaveRecord")
self.hasSSR = false
end
function GachaNewBieShowResultCtrl:OnBtnClick_Summon()
local ConfirmCallback = function()
EventManager.Hit("GachaNewbieSpin")
end
local msg = {
nType = AllEnum.MessageBox.Confirm,
sContent = ConfigTable.GetUIText("Gacha_Newbie_RecordSSRHint"),
callbackConfirm = ConfirmCallback,
bDisableSnap = false
}
if self.remainCount == 0 then
self:OnBtnClick_Record()
elseif self.hasSSR then
EventManager.Hit(EventId.OpenMessageBox, msg)
else
ConfirmCallback()
end
end
function GachaNewBieShowResultCtrl:OnBtnClick_Record()
EventManager.Hit("GachaNewbieRecord")
end
function GachaNewBieShowResultCtrl:OnEvent_Guide_GachaStart(bBlock)
self.GuideBlock = bBlock
end
return GachaNewBieShowResultCtrl