local uiCtrl = require_ex('UI/Panels/Base/UICtrl') local PANEL_ID = PanelId.GachaWeaponResult local PHASE_ID = PhaseId.GachaWeaponResult GachaWeaponResultCtrl = HL.Class('GachaWeaponResultCtrl', uiCtrl.UICtrl) GachaWeaponResultCtrl.s_messages = HL.StaticField(HL.Table) << { } GachaWeaponResultCtrl.m_createdWeaponInsts = HL.Field(HL.Table) GachaWeaponResultCtrl.m_curFocusCell = HL.Field(HL.Any) GachaWeaponResultCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg) self.m_createdWeaponInsts = {} self.view.btnClose.onClick:AddListener(function() self:_OnClickExit() end) self.view.shareBtn.onClick:AddListener(function() if self.m_curFocusCell then self.m_curFocusCell.hintRect.gameObject:SetActive(false) end Notify(MessageConst.SHOW_COMMON_SHARE_PANEL, { type = "Draw", onComplete = function() if self.m_curFocusCell then self.m_curFocusCell.hintRect.gameObject:SetActive(true) end end }) end) local weapons = arg.weapons local maxRarity = 0 local spriteDict = {} local weaponSpriteDict = {} for i, weapon in ipairs(weapons) do local cell = self.view['gachaWeaponResultCell' .. i] cell.gameObject:SetActive(true) local rarity = weapon.rarity maxRarity = math.max(maxRarity, rarity) for j = 4,6 do if j == rarity then cell["starBg" .. j].gameObject:SetActive(true) cell["starLight" .. j].gameObject:SetActive(true) else cell["starBg" .. j].gameObject:SetActive(false) cell["starLight" .. j].gameObject:SetActive(false) end end if #weapon.items > 0 then cell.itemNumberNode.gameObject:SetActive(true) local item = weapon.items[1] local itemId = item.id local itemData = Tables.itemTable:GetValue(itemId) local sprite if not spriteDict[itemId] then sprite = self:LoadSprite(UIConst.UI_SPRITE_ITEM, itemData.iconId) spriteDict[itemId] = sprite else sprite = spriteDict[itemId] end cell.icon.sprite = sprite cell.countTxt.text = "×" .. item.count else cell.itemNumberNode.gameObject:SetActive(false) end cell.newNode.gameObject:SetActive(weapon.isNew) local weaponSprite local weaponItemData = Tables.itemTable:GetValue(weapon.weaponId) if not weaponSpriteDict[weaponItemData.iconId] then weaponSprite = self:LoadSprite(UIConst.UI_SPRITE_GACHA_WEAPON, weaponItemData.iconId) weaponSpriteDict[weaponItemData.iconId] = weaponSprite else weaponSprite = weaponSpriteDict[weaponItemData.iconId] end cell.weaponImg.sprite = weaponSprite cell.weaponShadowImg.sprite = weaponSprite cell.bgImageMask.enabled = (i ~= 1) cell.button.onClick:AddListener(function() self:_ShowInitWeaponPreview(weapon.weaponId) end) cell.hintRect.gameObject:SetActive(false) cell.button.onIsNaviTargetChanged = function(isTarget) cell.hintRect.gameObject:SetActive(isTarget) if isTarget then self.m_curFocusCell = cell elseif self.m_curFocusCell == cell then self.m_curFocusCell = nil end end end self:PlayAnimationIn() if maxRarity >= 6 then AudioManager.PostEvent("Au_UI_Gacha_Sum6_weapon") else AudioManager.PostEvent("Au_UI_Gacha_Sum_weapon") end self.view.controllerHintPlaceholder:InitControllerHintPlaceholder({ self.view.inputGroup.groupId }) self.view.weaponNaviGroup.onIsFocusedChange:AddListener(function(isFocused) if isFocused then if self.view.gachaWeaponResultCell10.button then logger.error(self.view.gachaWeaponResultCell10.button.name) end InputManagerInst.controllerNaviManager:SetTarget(self.view.gachaWeaponResultCell10.button) end end) end GachaWeaponResultCtrl._OnClickExit = HL.Method() << function(self) local arg = self.m_phase.arg if arg and arg.onComplete then arg.onComplete() end PhaseManager:ExitPhaseFast(PhaseId.GachaWeaponResult) end GachaWeaponResultCtrl._ShowInitWeaponPreview = HL.Method(HL.String) << function(self, weaponId) local weaponInst if self.m_createdWeaponInsts[weaponId] ~= nil then weaponInst = self.m_createdWeaponInsts[weaponId] else weaponInst = GameInstance.player.charBag:CreateClientInitialGachaPoolWeapon(weaponId) self.m_createdWeaponInsts[weaponId] = weaponInst end local fadeTimeBoth = UIConst.CHAR_INFO_TRANSITION_BLACK_SCREEN_DURATION local dynamicFadeData = UIUtils.genDynamicBlackScreenMaskData("GachaWeaponResult->WeaponInfo", fadeTimeBoth, fadeTimeBoth, function() local showWeaponPreviewArgs = { isWeaponPreview = true, weaponId = weaponId, weaponGroups = { }, } PhaseManager:OpenPhase(PhaseId.Wiki, showWeaponPreviewArgs) end) GameAction.ShowBlackScreen(dynamicFadeData) end GachaWeaponResultCtrl.OnClose = HL.Override() << function(self) self.m_createdWeaponInsts = {} GameInstance.player.charBag:ClearAllClientCharAndItemData() end HL.Commit(GachaWeaponResultCtrl)