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

181 lines
7.0 KiB
Lua

local GachaShowResultGrid = class("GachaShowResultGrid", BaseCtrl)
local GameResourceLoader = require("Game.Common.Resource.GameResourceLoader")
local ResType = GameResourceLoader.ResType
local GachaShowResRoot = "UI/GachaEx/Sprites_Show/"
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
local typeof = typeof
local mapCharAnimName = {
[GameEnum.itemRarity.SSR] = "GachaShowResultItem_rtChar_SSR_in",
[GameEnum.itemRarity.SR] = "GachaShowResultItem_rtChar_SR_in"
}
local mapOutfitAnimName = {
[GameEnum.itemRarity.SSR] = "GachaShowResultItem_outfit_SSR_in",
[GameEnum.itemRarity.SR] = "GachaShowResultItem_outfit_SR_in",
[GameEnum.itemRarity.R] = "GachaShowResultItem_outfit_R_in",
[GameEnum.itemRarity.M] = "GachaShowResultItem_outfit_N_in",
[GameEnum.itemRarity.N] = "GachaShowResultItem_outfit_N_in"
}
GachaShowResultGrid._mapNodeConfig = {
rtOutfit = {},
imgOutfitBg = {sComponentName = "Image"},
imgOutfit = {sComponentName = "Image"},
imgOutfitIcon = {sComponentName = "Image"},
rtChar = {},
imgCharBg = {sComponentName = "Image"},
imgChar = {sComponentName = "Image"},
animChar = {sNodeName = "imgChar", sComponentName = "Animator"},
animItem = {
sNodeName = "resultItemRoot",
sComponentName = "Animator"
},
imgItem = {sComponentName = "Image"},
imgNewChar = {},
imgNewOutfit = {},
imgRare = {sComponentName = "Image"},
imgPoint1 = {},
imgPoint2 = {},
resultItem = {
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl",
nCount = 2
},
btnItem = {
sComponentName = "UIButton",
callback = "OnClickBtn_ShowDetail"
}
}
GachaShowResultGrid._mapEventConfig = {}
function GachaShowResultGrid:OnEnable()
self.animatorRoot = self.gameObject:GetComponent("Animator")
self.canvasGroup = self.gameObject:GetComponent("CanvasGroup")
end
function GachaShowResultGrid:Refresh(nTid, bNew, nDelayTime)
self.nTid = nTid
self._mapNode.animItem:Play("empty")
NovaAPI.SetCanvasGroupAlpha(self.canvasGroup, 0)
self._mapNode.imgNewChar:SetActive(bNew)
self._mapNode.imgNewOutfit:SetActive(bNew)
local mapItemCfgData = ConfigTable.GetData_Item(nTid)
if mapItemCfgData == nil then
printError("ItemData missing:" .. nTid)
self.gameObject:SetActive(false)
return
end
local delayCallback = function()
NovaAPI.SetCanvasGroupAlpha(self.canvasGroup, 1)
if self.sAnimName ~= nil and self.sAnimName ~= nil then
self.animatorRoot:Play(self.sAnimName)
end
if mapItemCfgData.Rarity == GameEnum.itemRarity.SSR then
WwiseAudioMgr:PlaySound("ui_recuit_gacha_result_SSR")
elseif mapItemCfgData.Rarity == GameEnum.itemRarity.SR then
WwiseAudioMgr:PlaySound("ui_recuit_gacha_result_SR")
end
self.delayTimer = nil
end
if mapItemCfgData.Type == GameEnum.itemType.Disc then
self.nItemType = GameEnum.itemType.Disc
local mapOutfitCfgData = ConfigTable.GetData("Disc", nTid)
if mapOutfitCfgData == nil then
printError("Outfit Data missing:" .. nTid)
self.gameObject:SetActive(false)
return
end
self._mapNode.rtOutfit:SetActive(true)
self._mapNode.rtChar:SetActive(false)
self:SetPngSprite(self._mapNode.imgOutfit, mapItemCfgData.Icon .. AllEnum.OutfitIconSurfix.Gacha)
NovaAPI.SetImageSprite(self._mapNode.imgOutfitBg, Settings.AB_ROOT_PATH .. GachaShowResRoot .. "db_gacha_Outfit_" .. AllEnum.FrameColor_New[mapItemCfgData.Rarity] .. ".png")
NovaAPI.SetImageSprite(self._mapNode.imgRare, Settings.AB_ROOT_PATH .. GachaShowResRoot .. "rare_character_gacha_" .. AllEnum.FrameColor_New[mapItemCfgData.Rarity] .. ".png")
NovaAPI.SetImageNativeSize(self._mapNode.imgRare)
self.sAnimName = mapOutfitAnimName[mapItemCfgData.Rarity]
if bNew then
self._mapNode.resultItem[1].gameObject:SetActive(false)
self._mapNode.resultItem[2].gameObject:SetActive(false)
self.bShowItem = false
else
self._mapNode.resultItem[1].gameObject:SetActive(false)
self._mapNode.resultItem[2].gameObject:SetActive(false)
self._mapNode.resultItem[1]:SetItem(mapOutfitCfgData.TransformItemId, nil, nil, nil, false, false, false, true, false)
self.bShowItem = true
end
elseif mapItemCfgData.Type == GameEnum.itemType.Char then
self.nItemType = GameEnum.itemType.Char
local mapCharCfgData = ConfigTable.GetData_Character(nTid)
if mapCharCfgData == nil then
printError("Char Data missing:" .. nTid)
self.gameObject:SetActive(false)
return 0
end
self._mapNode.rtOutfit:SetActive(false)
self._mapNode.rtChar:SetActive(true)
local mapCfgDataCharSkin = ConfigTable.GetData_CharacterSkin(mapCharCfgData.DefaultSkinId)
self:SetPngSprite(self._mapNode.imgChar, mapCfgDataCharSkin.Icon .. AllEnum.CharHeadIconSurfix.GC)
NovaAPI.SetImageSprite(self._mapNode.imgCharBg, Settings.AB_ROOT_PATH .. GachaShowResRoot .. "db_gacha_character_" .. AllEnum.FrameColor_New[mapItemCfgData.Rarity] .. ".png")
NovaAPI.SetImageSprite(self._mapNode.imgRare, Settings.AB_ROOT_PATH .. GachaShowResRoot .. "rare_character_gacha_" .. AllEnum.FrameColor_New[mapItemCfgData.Rarity] .. ".png")
self._mapNode.imgPoint1:SetActive(mapItemCfgData.Rarity ~= 1)
self._mapNode.imgPoint2:SetActive(mapItemCfgData.Rarity == 1)
NovaAPI.SetImageNativeSize(self._mapNode.imgRare)
if bNew then
self._mapNode.resultItem[1].gameObject:SetActive(false)
self._mapNode.resultItem[2].gameObject:SetActive(false)
self.bShowItem = false
else
self._mapNode.resultItem[1].gameObject:SetActive(false)
self._mapNode.resultItem[2].gameObject:SetActive(false)
self._mapNode.resultItem[1]:SetItem(mapCharCfgData.FragmentsId, nil, mapCharCfgData.TransformQty, nil, false, false, false, true, false)
self.bShowItem = true
end
self.sAnimName = mapCharAnimName[mapItemCfgData.Rarity]
else
printError("Item Type Error:" .. mapItemCfgData.Type)
self.gameObject:SetActive(false)
self.bShowItem = false
return 0
end
if 0 < nDelayTime then
self.delayTimer = self:AddTimer(1, nDelayTime, delayCallback, true, true, nil, nil)
else
delayCallback()
end
if mapItemCfgData.Rarity == GameEnum.itemRarity.SSR then
return 0.35
else
return 0.1
end
end
function GachaShowResultGrid:LoadPngGacha(sPath)
return self:LoadAsset(sPath .. ".png", typeof(Sprite))
end
function GachaShowResultGrid:ShowAllCardEnd()
if self.bShowItem == true then
local mapItemCfgData = ConfigTable.GetData_Item(self.nTid)
if mapItemCfgData.Type == GameEnum.itemType.Char then
self._mapNode.animItem:Play("resultItemRoot_Char")
else
self._mapNode.animItem:Play("resultItemRoot_Outfit")
end
self._mapNode.resultItem[1].gameObject:SetActive(true)
WwiseAudioMgr:PlaySound("ui_recuit_gacha_result_crystal")
else
self._mapNode.animItem:Play("empty")
end
end
function GachaShowResultGrid:JumpDelay()
if self.delayTimer ~= nil then
self.delayTimer:Cancel(true)
end
end
function GachaShowResultGrid:OnClickBtn_ShowDetail()
if PlayerData.Guide:GetGuideState() then
return
end
if self.nItemType == nil then
return
end
if self.nItemType == GameEnum.itemType.Disc then
EventManager.Hit(EventId.OpenPanel, PanelId.DiscSample, self.nTid)
elseif self.nItemType == GameEnum.itemType.Char then
EventManager.Hit(EventId.OpenPanel, PanelId.CharBgTrialPanel, PanelId.CharInfoTrial, self.nTid)
end
end
return GachaShowResultGrid