local serverBrowserPath = "frontEnd.systemLinkMenu.serverBrowser" local serverBrowserOffsets = {10, 240, 360, 450} local leaveMenuHandler = function(menu, controller) -- Engine.StopGameMode() LUI.FlowManager.RequestLeaveMenu(menu, true) end local updateServerDisplayListAndCreateModels updateServerDisplayListAndCreateModels = function(menu, controller, index) local waitDuration = menu:Wait(250) waitDuration.onComplete = function() return updateServerDisplayListAndCreateModels(menu, controller) end Lobby.UpdateServerDisplayList(controller) Lobby.CreateServersDataModels(controller) end local setupSystemLinkMenu = function(menu, controller, index) assert(menu.ServerBrowser) assert(menu.ServerBrowser.ServerList) menu:setPriority(-1) menu.isSignInMenu = true local isAliensMode = Engine.IsAliensMode() if isAliensMode then Engine.SetFrontEndSceneSection("zm_main", 1) else menu.MenuTitle.MenuBreadcrumbs:setText(ToUpperCase( Engine.Localize("LUA_MENU_BREADCRUMB_2_ITEMS", "IW7-Mod", "MULTIPLAYER")), 0) end menu.addButtonHelperFunction = function(helperMenu, helperController) menu:AddButtonHelperText({ helper_text = Engine.Localize("MENU_SB_TOOLTIP_BTN_REFRESH"), button_ref = "button_alt1", side = "left", priority = 2, clickable = true }) end menu:addEventHandler("menu_create", menu.addButtonHelperFunction) assert(Engine.IsUserSignedIn(controller)) if isAliensMode then Engine.ExecNow(CPConfig.default_systemlink, controller) else Engine.ExecNow(MPConfig.default_systemlink, controller) end Engine.Exec(MPConfig.default_dvars) menu:addEventHandler("menu_create", function(menuHandler, eventHandler) assert(menu.bindButton) if CONDITIONS.IsThirdGameMode(menu) then ACTIONS.AnimateSequence(menu, "DisplayServerBrowser") end menu.bindButton:addEventHandler("button_secondary", function(buttonHandler, buttonEvent) local scopedData = LUI.FlowManager.GetScopedData(menu) if scopedData.serverBrowserFocused then scopedData.serverBrowserFocused = false ACTIONS.LoseFocus(menu, "ServerBrowser", controller) ACTIONS.GainFocus(menu.SystemLinkMenuButtons, "JoinGameButton", controller) else leaveMenuHandler(buttonHandler, buttonEvent) end end) menu.bindButton:addEventHandler("button_alt1", function(buttonHandler, buttonEvent) Lobby.RefreshServerList(controller) ACTIONS.PlaySoundSetSound(menu, "selectAlt", false) end) end) menu.SystemLinkMenuButtons:addEventHandler("gain_focus", function(menuHandler, eventHandler) local scopedData = LUI.FlowManager.GetScopedData(menu) if scopedData.serverBrowserFocused then scopedData.serverBrowserFocused = false ACTIONS.LoseFocus(menu, "ServerBrowser", controller) if CONDITIONS.IsThirdGameMode(menu) then ACTIONS.AnimateSequence(menu, "DisplayServerBrowser") menu:RemoveButtonHelperText("button_alt1", "left") end end end) Engine.PLMRefreshData() if Engine.IsCoreMode() then ClientWeapon.SetWeaponVisible(0, false) ClientCharacter.SetCharacterVisible(0, false) end Lobby.SetPartyUIRoot(PartyUIRoot.SYSTEM_LINK) local scopedData = LUI.FlowManager.GetScopedData(menu) if scopedData.optionsMenuOpened then scopedData.optionsMenuOpened = nil if scopedData.serverBrowserFocused then scopedData.serverBrowserFocused = false menu:clearSavedState() if isAliensMode then LUI.FlowManager.ClearSavedMenuState("CPSystemLinkMenu") else LUI.FlowManager.ClearSavedMenuState("MPSystemLinkMenu") end end else scopedData.serverBrowserFocused = false end Lobby.BuildServerList(controller) Lobby.RefreshServerList(controller) assert(menu.ServerBrowser) assert(menu.ServerBrowser.ServerList) local serverCountDataSource = LUI.DataSourceInGlobalModel.new(serverBrowserPath .. ".serverCount") menu:SubscribeToModel(serverCountDataSource:GetModel(controller), function() local serverCount = serverCountDataSource:GetValue(controller) if serverCount ~= nil then if serverCount == 0 then local scopedData = LUI.FlowManager.GetScopedData(menu) if scopedData.serverBrowserFocused then scopedData.serverBrowserFocused = false ACTIONS.LoseFocus(menu, "ServerBrowser", controller) end end menu.ServerBrowser:SetBlurHeight(serverCount) end end) local serverListDataSource = LUI.DataSourceFromList.new(serverCountDataSource) serverListDataSource.MakeDataSourceAtIndex = function(dataSource, index, controller) local color = index % 2 == 0 and COLORS.white or COLORS.black local statusDataSource = LUI.DataSourceInGlobalModel.new(serverBrowserPath .. "." .. index .. ".status") return { index = index, color = color, host = LUI.DataSourceInGlobalModel.new(serverBrowserPath .. "." .. index .. ".host"), map = LUI.DataSourceInGlobalModel.new(serverBrowserPath .. "." .. index .. ".map"), players = LUI.DataSourceInGlobalModel.new(serverBrowserPath .. "." .. index .. ".players"), type = LUI.DataSourceInGlobalModel.new(serverBrowserPath .. "." .. index .. ".type"), status = statusDataSource:Filter("status", function(value, model) if value == 1 then return Engine.Localize("MENU_LOBBY") else return Engine.Localize("MENU_IN_GAME_CAPS") end end) } end menu.ServerBrowser.ServerList:SetGridDataSource(serverListDataSource) assert(menu.bindButton) menu.bindButton:addEventHandler("button_start", function(buttonHandler, buttonEvent) local scopedData = LUI.FlowManager.GetScopedData(menu) scopedData.optionsMenuOpened = true ACTIONS.OpenMenu("OptionsMenu", true, buttonEvent.controller) ACTIONS.PlaySoundSetSound(menu, "selectAlt", false) end) local waitDuration = menu:Wait(250) waitDuration.onComplete = function() return updateServerDisplayListAndCreateModels(menu, controller) end Engine.StopMenuVideo() end MenuBuilder.m_types["SystemLinkMenu"] = function(menu, controller) local self = LUI.UIElement.new() self.id = "SystemLinkMenu" self._animationSets = {} self._sequences = {} local controllerIndex = controller and controller.controllerIndex if not controllerIndex and not Engine.InFrontend() then controllerIndex = self:getRootController() end assert(controllerIndex) self.soundSet = "cpMainMenuDefault" self:playSound("menu_open") local OuterMaskTop = nil if CONDITIONS.IsThirdGameMode(self) then OuterMaskTop = MenuBuilder.BuildRegisteredType("CPMenuOuterMask", { controllerIndex = controllerIndex }) OuterMaskTop.id = "OuterMaskTop" OuterMaskTop:SetZRotation(-168, 0) OuterMaskTop:SetAnchorsAndPosition(0, 0, 0, 1, _1080p * -190, _1080p * 76, _1080p * -320, _1080p * 100) self:addElement(OuterMaskTop) self.OuterMaskTop = OuterMaskTop end local OuterMaskBottom = nil if CONDITIONS.IsThirdGameMode(self) then OuterMaskBottom = MenuBuilder.BuildRegisteredType("CPMenuOuterMask", { controllerIndex = controllerIndex }) OuterMaskBottom.id = "OuterMaskBottom" OuterMaskBottom:SetZRotation(-168, 0) OuterMaskBottom:SetAnchorsAndPosition(0, 0, 1, 0, _1080p * -83, _1080p * 183, _1080p * -205, _1080p * 215) self:addElement(OuterMaskBottom) self.OuterMaskBottom = OuterMaskBottom end local MenuTitle = nil if CONDITIONS.IsCoreMultiplayer(self) then MenuTitle = MenuBuilder.BuildRegisteredType("MenuTitle", { controllerIndex = controllerIndex }) MenuTitle.id = "MenuTitle" MenuTitle.MenuTitle:setText(ToUpperCase(Engine.Localize("SERVER BROWSER")), 0) MenuTitle.MenuBreadcrumbs:setText(ToUpperCase(Engine.Localize("EXE_LOCAL_PLAY")), 0) MenuTitle.Icon:SetTop(_1080p * -28.5, 0) MenuTitle.Icon:SetBottom(_1080p * 61.5, 0) MenuTitle:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 96, _1080p * 1056, _1080p * 54, _1080p * 134) self:addElement(MenuTitle) self.MenuTitle = MenuTitle end local ButtonHelperBar = nil ButtonHelperBar = MenuBuilder.BuildRegisteredType("ButtonHelperBar", { controllerIndex = controllerIndex }) ButtonHelperBar.id = "ButtonHelperBar" ButtonHelperBar:SetAnchorsAndPosition(0, 0, 1, 0, 0, 0, _1080p * -85, 0) self:addElement(ButtonHelperBar) self.ButtonHelperBar = ButtonHelperBar local SocialFeed = nil SocialFeed = MenuBuilder.BuildRegisteredType("SocialFeed", { controllerIndex = controllerIndex }) SocialFeed.id = "SocialFeed" SocialFeed:SetAnchorsAndPosition(0, 0, 1, 0, 0, 0, _1080p * -115, _1080p * -85) self:addElement(SocialFeed) self.SocialFeed = SocialFeed local SystemLinkMenuButtons = nil SystemLinkMenuButtons = MenuBuilder.BuildRegisteredType("SystemLinkMenuButtons", { controllerIndex = controllerIndex }) SystemLinkMenuButtons.id = "SystemLinkMenuButtons" SystemLinkMenuButtons:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 130, _1080p * 630, _1080p * 216, _1080p * 438) self:addElement(SystemLinkMenuButtons) self.SystemLinkMenuButtons = SystemLinkMenuButtons local LobbyMembers = nil if CONDITIONS.IsThirdGameMode(self) then LobbyMembers = MenuBuilder.BuildRegisteredType("LobbyMembers", { controllerIndex = controllerIndex }) LobbyMembers.id = "LobbyMembers" LobbyMembers:SetAlpha(0, 0) LobbyMembers:SetAnchorsAndPosition(1, 0, 0, 1, _1080p * -1790, _1080p * -1090, _1080p * 791.5, _1080p * 1435.5) self:addElement(LobbyMembers) self.LobbyMembers = LobbyMembers end local ServerBrowser = nil ServerBrowser = MenuBuilder.BuildRegisteredType("ServerBrowser", { controllerIndex = controllerIndex }) ServerBrowser.id = "ServerBrowser" ServerBrowser:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 659, _1080p * 1790, _1080p * 216, _1080p * 885) self:addElement(ServerBrowser) self.ServerBrowser = ServerBrowser local BloodSplat = nil if CONDITIONS.IsThirdGameMode(self) then BloodSplat = LUI.UIImage.new() BloodSplat.id = "BloodSplat" BloodSplat:SetAlpha(0.5, 0) BloodSplat:setImage(RegisterMaterial("cp_menu_zombies_blood_splats_large"), 0) BloodSplat:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 48, _1080p * 678, _1080p * -71, _1080p * 441) self:addElement(BloodSplat) self.BloodSplat = BloodSplat end local ZombiesLogo = nil if CONDITIONS.IsThirdGameMode(self) then ZombiesLogo = LUI.UIImage.new() ZombiesLogo.id = "ZombiesLogo" ZombiesLogo:setImage(RegisterMaterial("cp_menu_zombies_logo"), 0) ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 60, _1080p * 740, _1080p * 34, _1080p * 434) self:addElement(ZombiesLogo) self.ZombiesLogo = ZombiesLogo end local ZomLanPartyShadow = nil if CONDITIONS.IsThirdGameMode(self) then ZomLanPartyShadow = LUI.UIStyledText.new() ZomLanPartyShadow.id = "ZomLanPartyShadow" ZomLanPartyShadow:SetRGBFromInt(0, 0) ZomLanPartyShadow:setText(Engine.Localize("Server Browser"), 0) ZomLanPartyShadow:SetFontSize(36 * _1080p) ZomLanPartyShadow:SetFont(FONTS.GetFont(FONTS.ZmClean.File)) ZomLanPartyShadow:SetAlignment(LUI.Alignment.Center) ZomLanPartyShadow:SetOptOutRightToLeftAlignmentFlip(true) ZomLanPartyShadow:SetShadowRGBFromInt(0, 0) ZomLanPartyShadow:SetOutlineRGBFromInt(0, 0) ZomLanPartyShadow:SetDecodeLetterLength(25) ZomLanPartyShadow:SetDecodeMaxRandChars(3) ZomLanPartyShadow:SetDecodeUpdatesPerLetter(4) ZomLanPartyShadow:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 272, _1080p * 597.5, _1080p * 302, _1080p * 338) self:addElement(ZomLanPartyShadow) self.ZomLanPartyShadow = ZomLanPartyShadow end local ZomLanParty = nil if CONDITIONS.IsThirdGameMode(self) then ZomLanParty = LUI.UIStyledText.new() ZomLanParty.id = "ZomLanParty" ZomLanParty:SetRGBFromInt(14042667, 0) ZomLanParty:setText(Engine.Localize("Server Browser"), 0) ZomLanParty:SetFontSize(36 * _1080p) ZomLanParty:SetFont(FONTS.GetFont(FONTS.ZmClean.File)) ZomLanParty:SetAlignment(LUI.Alignment.Center) ZomLanParty:SetOptOutRightToLeftAlignmentFlip(true) ZomLanParty:SetShadowRGBFromInt(0, 0) ZomLanParty:SetOutlineRGBFromInt(0, 0) ZomLanParty:SetDecodeLetterLength(25) ZomLanParty:SetDecodeMaxRandChars(3) ZomLanParty:SetDecodeUpdatesPerLetter(4) ZomLanParty:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 272, _1080p * 597.5, _1080p * 302, _1080p * 338) self:addElement(ZomLanParty) self.ZomLanParty = ZomLanParty end local MPLobbyMembersPlayercards = nil MPLobbyMembersPlayercards = MenuBuilder.BuildRegisteredType("MPLobbyMembersPlayercards", { controllerIndex = controllerIndex }) MPLobbyMembersPlayercards.id = "MPLobbyMembersPlayercards" MPLobbyMembersPlayercards:SetAnchorsAndPosition(0, 1, 1, 0, _1080p * 130, _1080p * 630, _1080p * -255, _1080p * -189) self:addElement(MPLobbyMembersPlayercards) self.MPLobbyMembersPlayercards = MPLobbyMembersPlayercards local ButtonDescriptionText = nil ButtonDescriptionText = MenuBuilder.BuildRegisteredType("ButtonDescriptionText", { controllerIndex = controllerIndex }) ButtonDescriptionText.id = "ButtonDescriptionText" ButtonDescriptionText:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 130, _1080p * 550, _1080p * 334, _1080p * 366) self:addElement(ButtonDescriptionText) self.ButtonDescriptionText = ButtonDescriptionText self._animationSets.DefaultAnimationSet = function() ServerBrowser:RegisterAnimationSequence("DefaultSequence", {{function() return self.ServerBrowser:SetAlpha(1, 0) end}, {function() return self.ServerBrowser:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 659, _1080p * 1790, _1080p * 216, _1080p * 885, 0) end}}) self._sequences.DefaultSequence = function() ServerBrowser:AnimateSequence("DefaultSequence") end SystemLinkMenuButtons:RegisterAnimationSequence("IntroCore", {{function() return self.SystemLinkMenuButtons:SetAlpha(1, 0) end}, {function() return self.SystemLinkMenuButtons:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 130, _1080p * 630, _1080p * 216, _1080p * 438, 0) end}}) ServerBrowser:RegisterAnimationSequence("IntroCore", {{function() return self.ServerBrowser:SetAlpha(1, 0) end}, {function() return self.ServerBrowser:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 659, _1080p * 1790, _1080p * 216, _1080p * 885, 0) end}}) self._sequences.IntroCore = function() SystemLinkMenuButtons:AnimateSequence("IntroCore") ServerBrowser:AnimateSequence("IntroCore") end end self._animationSets.ThirdGameModeAnimationSet = function() self._sequences.DefaultSequence = function() end if CONDITIONS.IsThirdGameMode(self) then OuterMaskTop:RegisterAnimationSequence("Intro", {{function() return self.OuterMaskTop:SetAlpha(0, 0) end, function() return self.OuterMaskTop:SetAlpha(0.6, 500, LUI.EASING.outBack) end}, {function() return self.OuterMaskTop:SetAnchorsAndPosition(0, 0, 0, 1, _1080p * -190, _1080p * 76, _1080p * -635, _1080p * -215, 0) end, function() return self.OuterMaskTop:SetAnchorsAndPosition(0, 0, 0, 1, _1080p * -190, _1080p * 76, _1080p * -635, _1080p * -215, 500, LUI.EASING.outBack) end, function() return self.OuterMaskTop:SetAnchorsAndPosition(0, 0, 0, 1, _1080p * -190, _1080p * 76, _1080p * -320, _1080p * 100, 500, LUI.EASING.outQuadratic) end, function() return self.OuterMaskTop:SetAnchorsAndPosition(0, 0, 0, 1, _1080p * -190, _1080p * 76, _1080p * -320, _1080p * 100, 139) end, function() return self.OuterMaskTop:SetAnchorsAndPosition(0, 0, 0, 1, _1080p * -190, _1080p * 76, _1080p * -280, _1080p * 140, 9) end, function() return self.OuterMaskTop:SetAnchorsAndPosition(0, 0, 0, 1, _1080p * -190, _1080p * 76, _1080p * -320, _1080p * 100, 200, LUI.EASING.outQuadratic) end}}) end if CONDITIONS.IsThirdGameMode(self) then OuterMaskBottom:RegisterAnimationSequence("Intro", {{function() return self.OuterMaskBottom:SetAlpha(0, 0) end, function() return self.OuterMaskBottom:SetAlpha(0.6, 500, LUI.EASING.outBack) end}, {function() return self.OuterMaskBottom:SetAnchorsAndPosition(0, 0, 1, 0, _1080p * -83, _1080p * 183, _1080p * 225, _1080p * 645, 0) end, function() return self.OuterMaskBottom:SetAnchorsAndPosition(0, 0, 1, 0, _1080p * -83, _1080p * 183, _1080p * 225, _1080p * 645, 500, LUI.EASING.outBack) end, function() return self.OuterMaskBottom:SetAnchorsAndPosition(0, 0, 1, 0, _1080p * -83, _1080p * 183, _1080p * -205, _1080p * 215, 500, LUI.EASING.outQuadratic) end, function() return self.OuterMaskBottom:SetAnchorsAndPosition(0, 0, 1, 0, _1080p * -83, _1080p * 183, _1080p * -205, _1080p * 215, 139) end, function() return self.OuterMaskBottom:SetAnchorsAndPosition(0, 0, 1, 0, _1080p * -83, _1080p * 183, _1080p * -245, _1080p * 175, 9) end, function() return self.OuterMaskBottom:SetAnchorsAndPosition(0, 0, 1, 0, _1080p * -83, _1080p * 183, _1080p * -205, _1080p * 215, 200, LUI.EASING.outQuadratic) end}}) end SystemLinkMenuButtons:RegisterAnimationSequence("Intro", {{function() return self.SystemLinkMenuButtons:SetAlpha(0, 0) end, function() return self.SystemLinkMenuButtons:SetAlpha(0, 1220) end, function() return self.SystemLinkMenuButtons:SetAlpha(1, 490) end}, {function() return self.SystemLinkMenuButtons:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 130, _1080p * 630, _1080p * 406, _1080p * 628, 0) end}}) if CONDITIONS.IsThirdGameMode(self) then LobbyMembers:RegisterAnimationSequence("Intro", {{function() return self.LobbyMembers:SetAlpha(0, 0) end, function() return self.LobbyMembers:SetAlpha(0, 2000) end}}) end ServerBrowser:RegisterAnimationSequence("Intro", {{function() return self.ServerBrowser:SetAlpha(0, 0) end}, {function() return self.ServerBrowser:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 789, _1080p * 1920, _1080p * 133, _1080p * 802, 0) end}}) if CONDITIONS.IsThirdGameMode(self) then BloodSplat:RegisterAnimationSequence("Intro", {{function() return self.BloodSplat:SetAlpha(0, 0) end, function() return self.BloodSplat:SetAlpha(0, 1000) end, function() return self.BloodSplat:SetAlpha(0, 140) end, function() return self.BloodSplat:SetAlpha(0.5, 10) end, function() return self.BloodSplat:SetAlpha(0.5, 200, LUI.EASING.outQuadratic) end, function() return self.BloodSplat:SetAlpha(0.4, 650, LUI.EASING.outQuadratic) end}, {function() return self.BloodSplat:SetZRotation(-5, 1000) end, function() return self.BloodSplat:SetZRotation(-5, 150) end, function() return self.BloodSplat:SetZRotation(0, 850, LUI.EASING.outQuadratic) end}, {function() return self.BloodSplat:playSound("splat", false, 1150) end}, {function() return self.BloodSplat:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 218.92, _1080p * 547.08, _1080p * 51.65, _1080p * 318.35, 1149) end, function() return self.BloodSplat:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 88, _1080p * 718, _1080p * -71, _1080p * 441, 70) end, function() return self.BloodSplat:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 80, _1080p * 710, _1080p * -71, _1080p * 441, 129, LUI.EASING.outQuadratic) end}}) end if CONDITIONS.IsThirdGameMode(self) then ZombiesLogo:RegisterAnimationSequence("Intro", {{function() return self.ZombiesLogo:SetAlpha(0, 0) end, function() return self.ZombiesLogo:SetAlpha(0, 1000) end, function() return self.ZombiesLogo:SetAlpha(1, 150) end}, {function() return self.ZombiesLogo:SetZRotation(5, 1000) end, function() return self.ZombiesLogo:SetZRotation(5, 150) end, function() return self.ZombiesLogo:SetZRotation(0, 850, LUI.EASING.outQuadratic) end}, {function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * -429.8, _1080p * 1249.8, _1080p * -260, _1080p * 728, 1000) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 80, _1080p * 720, _1080p * 51.65, _1080p * 416.35, 149) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 70, _1080p * 750, _1080p * 34, _1080p * 434, 200) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 70, _1080p * 750, _1080p * 36, _1080p * 436, 49) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 68, _1080p * 748, _1080p * 35.68, _1080p * 435.68, 50) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 70.35, _1080p * 750.35, _1080p * 33.39, _1080p * 433.39, 49) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 70.28, _1080p * 750.28, _1080p * 31.51, _1080p * 431.51, 49) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 68.22, _1080p * 748.22, _1080p * 34.03, _1080p * 434.03, 50) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 70.64, _1080p * 750.64, _1080p * 34.02, _1080p * 434.02, 49) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 70.47, _1080p * 750.47, _1080p * 36.01, _1080p * 436.01, 50) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 68.33, _1080p * 748.33, _1080p * 35.4, _1080p * 435.4, 49) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 68.93, _1080p * 748.93, _1080p * 32.9, _1080p * 432.9, 59) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 69.4, _1080p * 749.4, _1080p * 35.38, _1080p * 435.38, 40) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 69.73, _1080p * 749.73, _1080p * 36.61, _1080p * 436.61, 49) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 71.93, _1080p * 751.93, _1080p * 34.65, _1080p * 434.65, 50) end, function() return self.ZombiesLogo:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 70, _1080p * 750, _1080p * 34, _1080p * 434, 49, LUI.EASING.outQuadratic) end}}) end if CONDITIONS.IsThirdGameMode(self) then ZomLanPartyShadow:RegisterAnimationSequence("Intro", {{function() return self.ZomLanPartyShadow:SetAlpha(0, 0) end, function() return self.ZomLanPartyShadow:SetAlpha(0, 1710) end, function() return self.ZomLanPartyShadow:SetAlpha(1, 290) end}}) end if CONDITIONS.IsThirdGameMode(self) then ZomLanParty:RegisterAnimationSequence("Intro", {{function() return self.ZomLanParty:SetAlpha(0, 0) end, function() return self.ZomLanParty:SetAlpha(0, 1220) end, function() return self.ZomLanParty:SetAlpha(1, 490) end}, {function() return self.ZomLanParty:SetRGBFromInt(14042667, 0) end}}) end MPLobbyMembersPlayercards:RegisterAnimationSequence("Intro", {{function() return self.MPLobbyMembersPlayercards:SetAlpha(0, 0) end, function() return self.MPLobbyMembersPlayercards:SetAlpha(0, 700) end, function() return self.MPLobbyMembersPlayercards:SetAlpha(0, 1010) end, function() return self.MPLobbyMembersPlayercards:SetAlpha(1, 290) end}}) ButtonDescriptionText:RegisterAnimationSequence("Intro", {{function() return self.ButtonDescriptionText:SetAlpha(0, 0) end, function() return self.ButtonDescriptionText:SetAlpha(0, 1220) end, function() return self.ButtonDescriptionText:SetAlpha(1, 490) end}, {function() return self.ButtonDescriptionText:SetRGBFromTable(SWATCHES.text.primaryText, 0) end}, {function() return self.ButtonDescriptionText:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 132, _1080p * 552, _1080p * 524, _1080p * 556, 0) end}}) self._sequences.Intro = function() if CONDITIONS.IsThirdGameMode(self) then OuterMaskTop:AnimateSequence("Intro") end if CONDITIONS.IsThirdGameMode(self) then OuterMaskBottom:AnimateSequence("Intro") end SystemLinkMenuButtons:AnimateSequence("Intro") if CONDITIONS.IsThirdGameMode(self) then LobbyMembers:AnimateSequence("Intro") end ServerBrowser:AnimateSequence("Intro") if CONDITIONS.IsThirdGameMode(self) then BloodSplat:AnimateSequence("Intro") end if CONDITIONS.IsThirdGameMode(self) then ZombiesLogo:AnimateSequence("Intro") end if CONDITIONS.IsThirdGameMode(self) then ZomLanPartyShadow:AnimateSequence("Intro") end if CONDITIONS.IsThirdGameMode(self) then ZomLanParty:AnimateSequence("Intro") end MPLobbyMembersPlayercards:AnimateSequence("Intro") ButtonDescriptionText:AnimateSequence("Intro") end ServerBrowser:RegisterAnimationSequence("DisplayServerBrowser", {{function() return self.ServerBrowser:SetAlpha(0, 0) end, function() return self.ServerBrowser:SetAlpha(1, 80) end}, {function() return self.ServerBrowser:SetAnchorsAndPosition(0, 1, 0, 1, _1080p * 727, _1080p * 1858, _1080p * 216, _1080p * 885, 0) end}}) self._sequences.DisplayServerBrowser = function() ServerBrowser:AnimateSequence("DisplayServerBrowser") end ServerBrowser:RegisterAnimationSequence("HideServerBrowser", {{function() return self.ServerBrowser:SetAlpha(1, 0) end, function() return self.ServerBrowser:SetAlpha(0, 80) end}}) self._sequences.HideServerBrowser = function() ServerBrowser:AnimateSequence("HideServerBrowser") end end self._animationSets.DefaultAnimationSet() self.addButtonHelperFunction = function(arg0, arg1) arg0:AddButtonHelperText({ helper_text = Engine.Localize("LUA_MENU_SELECT"), button_ref = "button_primary", side = "left", clickable = true }) arg0:AddButtonHelperText({ helper_text = Engine.Localize("LUA_MENU_BACK"), button_ref = "button_secondary", side = "left", priority = 1, clickable = true }) arg0:AddButtonHelperText({ helper_text = Engine.Localize("LUA_MENU_OPTIONS_CAPS"), button_ref = "button_start", side = "left", priority = 4, clickable = true }) end self:addEventHandler("menu_create", self.addButtonHelperFunction) local bindButton = LUI.UIBindButton.new() bindButton.id = "selfBindButton" self:addElement(bindButton) self.bindButton = bindButton setupSystemLinkMenu(self, controllerIndex, controller) ACTIONS.AnimateSequence(self, "DefaultSequence") if CONDITIONS.IsThirdGameMode(self) then ACTIONS.SetAnimationSet(self, "ThirdGameModeAnimationSet") ACTIONS.AnimateSequence(self, "Intro") end if CONDITIONS.IsCoreMultiplayer(self) then ACTIONS.SetAnimationSet(self, "DefaultAnimationSet") ACTIONS.AnimateSequence(self, "IntroCore") end return self end local PopFunc = function() clearMatchData() WipeGlobalModelsAtPath(serverBrowserPath) end LUI.FlowManager.RegisterStackPushBehaviour("SystemLinkMenu", PushFunc) LUI.FlowManager.RegisterStackPopBehaviour("SystemLinkMenu", PopFunc)