aboutsummaryrefslogtreecommitdiff
path: root/Northstar.Client/scripts/vscripts/ui/menu_lobby.nut
diff options
context:
space:
mode:
Diffstat (limited to 'Northstar.Client/scripts/vscripts/ui/menu_lobby.nut')
-rw-r--r--Northstar.Client/scripts/vscripts/ui/menu_lobby.nut1628
1 files changed, 0 insertions, 1628 deletions
diff --git a/Northstar.Client/scripts/vscripts/ui/menu_lobby.nut b/Northstar.Client/scripts/vscripts/ui/menu_lobby.nut
deleted file mode 100644
index 3c868aab2..000000000
--- a/Northstar.Client/scripts/vscripts/ui/menu_lobby.nut
+++ /dev/null
@@ -1,1628 +0,0 @@
-untyped
-
-
-global function MenuLobby_Init
-
-global function InitLobbyMenu
-global function UICodeCallback_SetupPlayerListGenElements
-global function UpdateAnnouncementDialog
-global function EnableButton
-global function DisableButton
-
-global function UICodeCallback_CommunityUpdated
-global function UICodeCallback_FactionUpdated
-global function Lobby_UpdateInboxButtons
-
-global function GetTimeToRestartMatchMaking
-
-global function RefreshCreditsAvailable
-
-global function InviteFriendsIfAllowed
-global function SetPutPlayerInMatchmakingAfterDelay
-
-global function DLCStoreShouldBeMarkedAsNew
-
-global function SetNextAutoMatchmakingPlaylist
-global function GetNextAutoMatchmakingPlaylist
-
-global function OnDpadCommsButton_Activate
-
-global function GetActiveSearchingPlaylist
-
-global function Lobby_SetFDModeBasedOnSearching
-global function Lobby_IsFDMode
-global function Lobby_SetAutoFDOpen
-global function Lobby_SetFDMode
-global function Lobby_ToggleFDMode
-global function Lobby_CallsignButton3EventHandler
-global function Lobby_RefreshButtons
-
-global function OnStoreButton_Activate
-global function OnStoreBundlesButton_Activate
-global function OnStoreNewReleasesButton_Activate
-
-const string MATCHMAKING_AUDIO_CONNECTING = "menu_campaignsummary_titanunlocked"
-
-struct
-{
- struct {
- string playlistName = ""
- int mapIdx = -1
- int modeIdx = -1
- } preCacheInfo
-
- array searchIconElems
- array searchTextElems
- array matchStartCountdownElems
- array matchStatusRuis
-
- array creditsAvailableElems
-
- var chatroomMenu
- var chatroomMenu_chatroomWidget
-
- var findGameButton
- var inviteRoomButton
- var inviteFriendsButton
- var inviteFriendsToNetworkButton
- var toggleMenuModeButton
-
- var networksMoreButton
-
- int inboxHeaderIndex
- var inboxButton
-
- int customizeHeaderIndex
- var pilotButton
- var titanButton
- var boostsButton
- var storeButton
- var storeNewReleasesButton
- var storeBundlesButton
- var factionButton
- var bannerButton
- var patchButton
- var statsButton
- var networksHeader
- var settingsHeader
- var storeHeader
- var browseNetworkButton
- var faqButton
- var dpadCommsButton
-
- var genUpButton
-
- array<var> lobbyButtons
- var playHeader
- var customizeHeader
- var callsignHeader
-
- float timeToRestartMatchMaking = 0
-
- string nextAutoMatchmakingPlaylist
-
- var callsignCard
-
- bool putPlayerInMatchmakingAfterDelay = false
- float matchmakingStartTime = 0.0
- int etaTime = 0
- int etaMaxMinutes = 15
- string lastMixtapeMatchmakingStatus
-
- ComboStruct &lobbyComboStruct
-
- bool isFDMode = false
- bool shouldAutoOpenFDMenu = false
-} file
-
-void function MenuLobby_Init()
-{
- PrecacheHUDMaterial( $"ui/menu/lobby/player_hover" )
- PrecacheHUDMaterial( $"ui/menu/lobby/chatroom_player" )
- PrecacheHUDMaterial( $"ui/menu/lobby/chatroom_hover" )
- PrecacheHUDMaterial( $"ui/menu/main_menu/motd_background" )
- PrecacheHUDMaterial( $"ui/menu/main_menu/motd_background_happyhour" )
-
- AddUICallback_OnLevelInit( OnLobbyLevelInit )
-}
-
-
-bool function ChatroomIsVisibleAndFocused()
-{
- return Hud_IsVisible( file.chatroomMenu ) && Hud_IsFocused( file.chatroomMenu_chatroomWidget );
-}
-
-bool function ChatroomIsVisibleAndNotFocused()
-{
- return Hud_IsVisible( file.chatroomMenu ) && !Hud_IsFocused( file.chatroomMenu_chatroomWidget );
-}
-
-void function Lobby_UpdateInboxButtons()
-{
- var menu = GetMenu( "LobbyMenu" )
- if ( GetUIPlayer() == null || !IsPersistenceAvailable() )
- return
-
- bool hasNewMail = (Inbox_HasUnreadMessages() && Inbox_GetTotalMessageCount() > 0) || PlayerRandomUnlock_GetTotal( GetUIPlayer() ) > 0
- if ( hasNewMail )
- {
- int messageCount = Inbox_GetTotalMessageCount()
- int lootCount = PlayerRandomUnlock_GetTotal( GetUIPlayer() )
- int totalCount = messageCount + lootCount
-
- string countString
- if ( totalCount >= MAX_MAIL_COUNT )
- countString = MAX_MAIL_COUNT + "+"
- else
- countString = string( totalCount )
-
- SetComboButtonHeaderTitle( menu, file.inboxHeaderIndex, Localize( "#MENU_HEADER_NETWORKS_NEW_MSGS", countString ) )
- ComboButton_SetText( file.inboxButton, Localize( "#MENU_TITLE_INBOX_NEW_MSGS", countString ) )
- }
- else
- {
- SetComboButtonHeaderTitle( menu, file.inboxHeaderIndex, Localize( "#MENU_HEADER_NETWORKS" ) )
- ComboButton_SetText( file.inboxButton, Localize( "#MENU_TITLE_READ" ) )
- }
-
- ComboButton_SetNewMail( file.inboxButton, hasNewMail )
-}
-
-void function InitLobbyMenu()
-{
- var menu = GetMenu( "LobbyMenu" )
-
- InitOpenInvitesMenu()
-
- AddMenuFooterOption( menu, BUTTON_A, "#A_BUTTON_SELECT", "", null, ChatroomIsVisibleAndNotFocused )
- AddMenuFooterOption( menu, BUTTON_B, "#B_BUTTON_BACK", "#BACK" )
- AddMenuFooterOption( menu, BUTTON_BACK, "#BACK_BUTTON_POSTGAME_REPORT", "#POSTGAME_REPORT", OpenPostGameMenu, IsPostGameMenuValid )
- AddMenuFooterOption( menu, BUTTON_TRIGGER_RIGHT, "#R_TRIGGER_CHAT", "", null, IsVoiceChatPushToTalk )
-
- InitChatroom( menu )
-
- file.chatroomMenu = Hud_GetChild( menu, "ChatRoomPanel" )
- file.chatroomMenu_chatroomWidget = Hud_GetChild( file.chatroomMenu, "ChatRoom" )
- file.genUpButton = Hud_GetChild( menu, "GenUpButton" )
-
- SetupComboButtonTest( menu )
-
- AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, OnLobbyMenu_Open )
- AddMenuEventHandler( menu, eUIEvent.MENU_CLOSE, OnLobbyMenu_Close )
- AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, OnLobbyMenu_NavigateBack )
-
- RegisterUIVarChangeCallback( "gameStartTime", GameStartTime_Changed )
-
- RegisterUIVarChangeCallback( "showGameSummary", ShowGameSummary_Changed )
-
- file.searchIconElems = GetElementsByClassnameForMenus( "SearchIconClass", uiGlobal.allMenus )
- file.searchTextElems = GetElementsByClassnameForMenus( "SearchTextClass", uiGlobal.allMenus )
- file.matchStartCountdownElems = GetElementsByClassnameForMenus( "MatchStartCountdownClass", uiGlobal.allMenus )
- file.matchStatusRuis = GetElementsByClassnameForMenus( "MatchmakingStatusRui", uiGlobal.allMenus )
- file.creditsAvailableElems = GetElementsByClassnameForMenus( "CreditsAvailableClass", uiGlobal.allMenus )
-
- file.callsignCard = Hud_GetChild( menu, "CallsignCard" )
-
- AddEventHandlerToButton( menu, "GenUpButton", UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "Generation_Respawn" ) ) )
-
- AddMenuVarChangeHandler( "focus", UpdateFooterOptions )
- AddMenuVarChangeHandler( "isFullyConnected", UpdateFooterOptions )
- AddMenuVarChangeHandler( "isPartyLeader", UpdateFooterOptions )
- AddMenuVarChangeHandler( "isPrivateMatch", UpdateFooterOptions )
- #if DURANGO_PROG
- AddMenuVarChangeHandler( "DURANGO_canInviteFriends", UpdateFooterOptions )
- AddMenuVarChangeHandler( "DURANGO_isJoinable", UpdateFooterOptions )
- AddMenuVarChangeHandler( "DURANGO_isGameFullyInstalled", UpdateFooterOptions )
- #elseif PS4_PROG
- AddMenuVarChangeHandler( "PS4_canInviteFriends", UpdateFooterOptions )
- #elseif PC_PROG
- AddMenuVarChangeHandler( "ORIGIN_isEnabled", UpdateFooterOptions )
- AddMenuVarChangeHandler( "ORIGIN_isJoinable", UpdateFooterOptions )
- #endif
-
- RegisterSignal( "BypassWaitBeforeRestartingMatchmaking" )
- RegisterSignal( "PutPlayerInMatchmakingAfterDelay" )
- RegisterSignal( "CancelRestartingMatchmaking" )
- RegisterSignal( "LeaveParty" )
-}
-
-void function SetupComboButtonTest( var menu )
-{
- ComboStruct comboStruct = ComboButtons_Create( menu )
- file.lobbyComboStruct = comboStruct
-
- int headerIndex = 0
- int buttonIndex = 0
- file.playHeader = AddComboButtonHeader( comboStruct, headerIndex, "#MENU_HEADER_PLAY" )
-
- bool isModded = IsNorthstarServer()
-
-
- // this will be the server browser
- if ( isModded )
- {
- file.findGameButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_SERVER_BROWSER" )
- file.lobbyButtons.append( file.findGameButton )
- Hud_SetLocked( file.findGameButton, true )
- Hud_AddEventHandler( file.findGameButton, UIE_CLICK, OpenServerBrowser )
- }
- else
- {
- file.findGameButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_FIND_GAME" )
- file.lobbyButtons.append( file.findGameButton )
- Hud_AddEventHandler( file.findGameButton, UIE_CLICK, BigPlayButton1_Activate )
- }
-
- // this is used for launching private matches now
- if ( isModded )
- {
- file.inviteRoomButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#PRIVATE_MATCH" )
- Hud_AddEventHandler( file.inviteRoomButton, UIE_CLICK, StartPrivateMatch )
- }
- else
- {
- file.inviteRoomButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_INVITE_ROOM" )
- Hud_AddEventHandler( file.inviteRoomButton, UIE_CLICK, DoRoomInviteIfAllowed )
- }
-
- file.inviteFriendsButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_INVITE_FRIENDS" )
- Hud_AddEventHandler( file.inviteFriendsButton, UIE_CLICK, InviteFriendsIfAllowed )
-
- if ( isModded )
- {
- Hud_SetEnabled( file.inviteFriendsButton, false )
- Hud_SetVisible( file.inviteFriendsButton, false )
- }
-
- // file.toggleMenuModeButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_LOBBY_SWITCH_FD" )
- // Hud_AddEventHandler( file.toggleMenuModeButton, UIE_CLICK, ToggleLobbyMode )
-
- headerIndex++
- buttonIndex = 0
- file.customizeHeader = AddComboButtonHeader( comboStruct, headerIndex, "#MENU_HEADER_LOADOUTS" )
- file.customizeHeaderIndex = headerIndex
- var pilotButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_PILOT" )
- file.pilotButton = pilotButton
- file.lobbyButtons.append( pilotButton )
- Hud_AddEventHandler( pilotButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "EditPilotLoadoutsMenu" ) ) )
- var titanButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_TITAN" )
- file.titanButton = titanButton
- Hud_AddEventHandler( titanButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "EditTitanLoadoutsMenu" ) ) )
- file.boostsButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_BOOSTS" )
- Hud_AddEventHandler( file.boostsButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "BurnCardMenu" ) ) )
-
- headerIndex++
- buttonIndex = 0
- file.callsignHeader = AddComboButtonHeader( comboStruct, headerIndex, "#MENU_HEADER_CALLSIGN" )
- file.bannerButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_BANNER" )
- file.lobbyButtons.append( file.bannerButton )
- Hud_AddEventHandler( file.bannerButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "CallsignCardSelectMenu" ) ) )
- file.patchButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_PATCH" )
- Hud_AddEventHandler( file.patchButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "CallsignIconSelectMenu" ) ) )
- file.factionButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_FACTION" )
- Hud_AddEventHandler( file.factionButton, UIE_CLICK, Lobby_CallsignButton3EventHandler )
- file.statsButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_STATS" )
- Hud_AddEventHandler( file.statsButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "ViewStatsMenu" ) ) )
-
- file.callsignCard = Hud_GetChild( menu, "CallsignCard" )
-
- headerIndex++
- buttonIndex = 0
- file.networksHeader = AddComboButtonHeader( comboStruct, headerIndex, "#MENU_HEADER_NETWORKS" )
- file.inboxHeaderIndex = headerIndex
- var networksInbox = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_INBOX" )
- file.inboxButton = networksInbox
- file.lobbyButtons.append( networksInbox )
- Hud_AddEventHandler( networksInbox, UIE_CLICK, OnInboxButton_Activate )
- var switchButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#COMMUNITY_SWITCHCOMMUNITY" )
- Hud_AddEventHandler( switchButton, UIE_CLICK, OnSwitchButton_Activate )
- var browseButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#COMMUNITY_BROWSE_NETWORKS" )
- file.lobbyButtons.append( browseButton )
- Hud_AddEventHandler( browseButton, UIE_CLICK, OnBrowseNetworksButton_Activate )
- file.browseNetworkButton = browseButton
- #if NETWORK_INVITE
- file.inviteFriendsToNetworkButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#INVITE_FRIENDS" )
- file.lobbyButtons.append( file.inviteFriendsToNetworkButton )
- Hud_AddEventHandler( file.inviteFriendsToNetworkButton, UIE_CLICK, OnInviteFriendsToNetworkButton_Activate )
- #endif
-
- headerIndex++
- buttonIndex = 0
- file.storeHeader = AddComboButtonHeader( comboStruct, headerIndex, "#MENU_HEADER_STORE" )
- SetComboButtonHeaderTint( GetMenu( "LobbyMenu" ), headerIndex, true )
- file.storeButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_STORE_BROWSE" )
- Hud_AddEventHandler( file.storeButton, UIE_CLICK, OnStoreButton_Activate )
- file.storeNewReleasesButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_STORE_NEW_RELEASES" )
- Hud_AddEventHandler( file.storeNewReleasesButton, UIE_CLICK, OnStoreNewReleasesButton_Activate )
- file.storeBundlesButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_STORE_BUNDLES" )
- Hud_AddEventHandler( file.storeBundlesButton, UIE_CLICK, OnStoreBundlesButton_Activate )
-
- headerIndex++
- buttonIndex = 0
- file.settingsHeader = AddComboButtonHeader( comboStruct, headerIndex, "#MENU_HEADER_SETTINGS" )
- var controlsButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#MENU_TITLE_CONTROLS" )
- Hud_AddEventHandler( controlsButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "ControlsMenu" ) ) )
- file.lobbyButtons.append( controlsButton )
- #if CONSOLE_PROG
- var avButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#AUDIO_VIDEO" )
- Hud_AddEventHandler( avButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "AudioVideoMenu" ) ) )
- #elseif PC_PROG
- var videoButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#AUDIO" )
- Hud_AddEventHandler( videoButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "AudioMenu" ) ) )
- var soundButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#VIDEO" )
- Hud_AddEventHandler( soundButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "VideoMenu" ) ) )
- #endif
- file.faqButton = AddComboButton( comboStruct, headerIndex, buttonIndex++, "#KNB_MENU_HEADER" )
- Hud_AddEventHandler( file.faqButton, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "KnowledgeBaseMenu" ) ) )
-
- comboStruct.navUpButtonDisabled = true
- comboStruct.navDownButton = file.genUpButton
-
- ComboButtons_Finalize( comboStruct )
-}
-
-bool function MatchResultsExist()
-{
- return true // TODO
-}
-
-void function StartPrivateMatch( var button )
-{
- if ( Hud_IsLocked( button ) )
- return
-
- ClientCommand( "StartPrivateMatchSearch" )
-}
-
-void function DoRoomInviteIfAllowed( var button )
-{
- if ( Hud_IsLocked( button ) )
- return
-
- if ( !DoesCurrentCommunitySupportInvites() )
- {
- OnBrowseNetworksButton_Activate( button )
- return
- }
-
- entity player = GetUIPlayer()
-
- if ( IsValid( player ) && Player_NextAvailableMatchmakingTime( player ) > 0 )
- {
- DisplayMatchmakingPenaltyDialog( player )
- return
- }
-
- SendOpenInvite( true )
- OpenSelectedPlaylistMenu()
-}
-
-void function DisplayMatchmakingPenaltyDialog( entity player )
-{
- int minutesRemaining = int( ceil( Player_GetRemainingMatchmakingDelay( player ) / 60) )
- if ( minutesRemaining <= 1 )
- ServerCallback_GenericDialog( 30, 31, true )
- else if ( minutesRemaining == 2 )
- ServerCallback_GenericDialog( 30, 32, true )
- else if ( minutesRemaining == 3 )
- ServerCallback_GenericDialog( 30, 33, true )
- else if ( minutesRemaining == 4 )
- ServerCallback_GenericDialog( 30, 34, true )
- else if ( minutesRemaining == 5 )
- ServerCallback_GenericDialog( 30, 35, true )
- else
- ServerCallback_GenericDialog( 30, 36, true )
-}
-
-void function CreatePartyAndInviteFriends()
-{
- if ( CanInvite() )
- {
- while ( !PartyHasMembers() && !AmIPartyLeader() )
- {
- ClientCommand( "createparty" )
- WaitFrameOrUntilLevelLoaded()
- }
- InviteFriends( file.inviteFriendsButton )
- }
- else
- {
- printt( "Not inviting friends - CanInvite() returned false" );
- }
-}
-
-void function ToggleLobbyMode( var button )
-{
- Lobby_ToggleFDMode()
-}
-
-void function Lobby_ToggleFDMode()
-{
- Hud_SetFocused( file.findGameButton )
- ComboButtons_ResetColumnFocus( file.lobbyComboStruct )
- file.isFDMode = !file.isFDMode
- Lobby_RefreshButtons()
-}
-
-void function Lobby_CallsignButton3EventHandler( var button )
-{
- if ( Lobby_IsFDMode() )
- {
- AdvanceMenu( GetMenu( "ViewStatsMenu" ) )
- }
- else
- {
- AdvanceMenu( GetMenu( "FactionChoiceMenu" ) )
- }
-}
-
-void function InviteFriendsIfAllowed( var button )
-{
- if ( Hud_IsLocked( button ) )
- return
-
- entity player = GetUIPlayer()
- if ( IsValid( player ) && Player_NextAvailableMatchmakingTime( player ) > 0 )
- {
- DisplayMatchmakingPenaltyDialog( player )
- return
- }
-
- #if PC_PROG
- if ( !Origin_IsOverlayAvailable() )
- {
- PopUpOriginOverlayDisabledDialog()
- return
- }
- #endif
-
- thread CreatePartyAndInviteFriends()
-}
-
-bool function CanInvite()
-{
- if ( Player_NextAvailableMatchmakingTime( GetUIPlayer() ) > 0 )
- return false
-
-#if DURANGO_PROG
- return ( GetMenuVarBool( "isFullyConnected" ) && GetMenuVarBool( "DURANGO_canInviteFriends" ) && GetMenuVarBool( "DURANGO_isJoinable" ) && GetMenuVarBool( "DURANGO_isGameFullyInstalled" ) )
- #elseif PS4_PROG
- return GetMenuVarBool( "PS4_canInviteFriends" )
- #elseif PC_PROG
- return ( GetMenuVarBool( "isFullyConnected" ) && GetMenuVarBool( "ORIGIN_isEnabled" ) && GetMenuVarBool( "ORIGIN_isJoinable" ) && Origin_IsOverlayAvailable() )
- #endif
-}
-
-void function Lobby_RefreshButtons()
-{
- bool fdMode = Lobby_IsFDMode()
- var menu = GetMenu( "LobbyMenu" )
-
- if ( GetTopNonDialogMenu() == GetMenu( "LobbyMenu" ) )
- {
- if ( fdMode )
- UI_SetPresentationType( ePresentationType.FD_MAIN )
- else
- UI_SetPresentationType( ePresentationType.DEFAULT )
- }
-
- string buttonString = fdMode ? "#MENU_LOBBY_SWITCH_DEFAULT" : "#MENU_LOBBY_SWITCH_FD"
- // ComboButton_SetText( file.toggleMenuModeButton, buttonString )
-
- buttonString = fdMode ? "" : "#MENU_TITLE_BOOSTS"
- Hud_SetEnabled( file.boostsButton, !fdMode )
- ComboButton_SetText( file.boostsButton, buttonString )
-
- buttonString = fdMode ? "#MENU_TITLE_STATS" : "#MENU_TITLE_FACTION"
- ComboButton_SetText( file.factionButton, buttonString )
-
- buttonString = fdMode ? "" : "#MENU_TITLE_STATS"
- Hud_SetEnabled( file.statsButton, !fdMode )
- ComboButton_SetText( file.statsButton, buttonString )
-
- buttonString = fdMode ? "#MENU_HEADER_PLAY_FD" : "#MENU_HEADER_PLAY"
- SetComboButtonHeaderTitle( menu, 0, buttonString )
-
- if ( fdMode )
- Hud_Hide( Hud_GetChild( menu, "ImgTopBar" ) )
- else
- Hud_Show( Hud_GetChild( menu, "ImgTopBar" ) )
-
- ComboButtons_ResetColumnFocus( file.lobbyComboStruct )
-
- if ( fdMode )
- {
- Hud_SetText( Hud_GetChild( menu, "MenuTitle" ), "" )
- }
- else
- {
- Hud_SetText( Hud_GetChild( menu, "MenuTitle" ), "#MULTIPLAYER" )
- }
-}
-
-void function OnLobbyMenu_Open()
-{
- Assert( IsConnected() )
-
- // code will start loading DLC info from first party unless already done
- InitDLCStore()
-
- thread UpdateCachedNewItems()
- if ( file.putPlayerInMatchmakingAfterDelay )
- {
- entity player = GetUIPlayer()
- if (IsValid( player ))
- {
- string playlistToSearch = expect string( player.GetPersistentVar( "lastPlaylist" ) )
- string nextAutoPlaylist = GetNextAutoMatchmakingPlaylist()
- if ( nextAutoPlaylist.len() > 0 )
- playlistToSearch = nextAutoPlaylist
-
- Lobby_SetFDModeBasedOnSearching( playlistToSearch )
- }
- AdvanceMenu( GetMenu( "SearchMenu" ) )
- thread PutPlayerInMatchmakingAfterDelay()
- file.putPlayerInMatchmakingAfterDelay = false
- }
- else if ( uiGlobal.activeMenu == GetMenu( "LobbyMenu" ) )
- Lobby_SetFDMode( false )
-
- thread UpdateLobbyUI()
- thread LobbyMenuUpdate( GetMenu( "LobbyMenu" ) )
-
- Hud_Show( file.chatroomMenu )
-
- Lobby_RefreshButtons()
-
- if ( IsFullyConnected() )
- {
- entity player = GetUIPlayer()
- if ( !IsValid( player ) )
- return
-
- while ( IsPersistenceAvailable() && (player.GetPersistentVarAsInt( "initializedVersion" ) < PERSISTENCE_INIT_VERSION) )
- {
- WaitFrame()
- }
- if ( !IsPersistenceAvailable() )
- return
-
- // Clear hidden boosts
- array<ItemData> boosts = GetAllItemsOfType( eItemTypes.BURN_METER_REWARD )
- foreach ( boost in boosts )
- {
- if ( boost.hidden )
- {
- ClearNewStatus( null, boost.ref )
- }
- }
-
- UpdateCallsignElement( file.callsignCard )
- RefreshCreditsAvailable()
-
- bool emotesAreEnabled = EmotesEnabled()
- // "Customize"
- {
- bool anyNewPilotItems = HasAnyNewPilotItems( player )
- bool anyNewTitanItems = HasAnyNewTitanItems( player )
- bool anyNewBoosts = HasAnyNewBoosts( player )
- bool anyNewCommsIcons = emotesAreEnabled ? HasAnyNewDpadCommsIcons( player ) : false
- bool anyNewCustomizeHeader = (anyNewPilotItems || anyNewTitanItems || anyNewBoosts || anyNewCommsIcons)
-
- RuiSetBool( Hud_GetRui( file.customizeHeader ), "isNew", anyNewCustomizeHeader )
- ComboButton_SetNew( file.pilotButton, anyNewPilotItems )
- ComboButton_SetNew( file.titanButton, anyNewTitanItems )
- ComboButton_SetNew( file.boostsButton, anyNewBoosts )
- }
-
- // "Store"
- {
- bool storeIsNew = DLCStoreShouldBeMarkedAsNew()
- RuiSetBool( Hud_GetRui( file.storeHeader ), "isNew", storeIsNew )
- ComboButton_SetNew( file.storeButton, storeIsNew )
- }
-
- // "Callsign"
- {
- bool anyNewBanners = HasAnyNewCallsignBanners( player )
- bool anyNewPatches = HasAnyNewCallsignPatches( player )
- bool anyNewFactions = HasAnyNewFactions( player ) && Lobby_IsFDMode()
- bool anyNewCallsignHeader = (anyNewBanners || anyNewPatches || anyNewFactions)
-
- RuiSetBool( Hud_GetRui( file.callsignHeader ), "isNew", anyNewCallsignHeader )
- ComboButton_SetNew( file.bannerButton, anyNewBanners )
- ComboButton_SetNew( file.patchButton, anyNewPatches )
- ComboButton_SetNew( file.factionButton, anyNewFactions )
- }
-
- bool faqIsNew = !GetConVarBool( "menu_faq_viewed" ) || HaveNewPatchNotes() || HaveNewCommunityNotes()
- RuiSetBool( Hud_GetRui( file.settingsHeader ), "isNew", faqIsNew )
- ComboButton_SetNew( file.faqButton, faqIsNew )
-
- TryUnlockSRSCallsign()
-
- Lobby_UpdateInboxButtons()
-
- if ( file.shouldAutoOpenFDMenu )
- {
- file.shouldAutoOpenFDMenu = false
- AdvanceMenu( GetMenu( GetPlaylistMenuName() ) )
- AdvanceMenu( GetMenu( "FDMenu" ) )
- }
- }
-}
-
-bool function DLCStoreShouldBeMarkedAsNew()
-{
- if ( !IsFullyConnected() )
- return false
-
- if ( !IsPersistenceAvailable() )
- return false
-
- bool hasSeenStore = expect bool( GetPersistentVar( "hasSeenStore" ) )
- bool result = (!hasSeenStore)
- return result
-}
-
-void function LobbyMenuUpdate( var menu )
-{
- EndSignal( uiGlobal.signalDummy, "CleanupInGameMenus" )
-
- while ( GetTopNonDialogMenu() == menu )
- {
- bool inPendingOpenInvite = InPendingOpenInvite()
- Hud_SetLocked( file.findGameButton, !IsPartyLeader() || inPendingOpenInvite )
- Hud_SetLocked( file.inviteRoomButton, IsOpenInviteVisible() || GetPartySize() > 1 || inPendingOpenInvite )
- Hud_SetLocked( file.inviteFriendsButton, inPendingOpenInvite )
-
- bool canGenUp = false
- if ( GetUIPlayer() )
- canGenUp = GetPersistentVarAsInt( "xp" ) == GetMaxPlayerXP() && GetGen() < MAX_GEN
-
- Hud_SetVisible( file.genUpButton, canGenUp )
- Hud_SetEnabled( file.genUpButton, canGenUp )
-
- WaitFrame()
- }
-}
-
-void function SetNextAutoMatchmakingPlaylist( string playlistName )
-{
- file.nextAutoMatchmakingPlaylist = playlistName
-}
-
-string function GetNextAutoMatchmakingPlaylist()
-{
- return file.nextAutoMatchmakingPlaylist
-}
-
-void function PutPlayerInMatchmakingAfterDelay()
-{
- Signal( uiGlobal.signalDummy, "PutPlayerInMatchmakingAfterDelay" )
- EndSignal( uiGlobal.signalDummy, "PutPlayerInMatchmakingAfterDelay" )
- EndSignal( uiGlobal.signalDummy, "CancelRestartingMatchmaking" )
- EndSignal( uiGlobal.signalDummy, "LeaveParty" )
- EndSignal( uiGlobal.signalDummy, "OnCloseLobbyMenu" )
- EndSignal( uiGlobal.signalDummy, "CleanupInGameMenus" )
-
- if ( AreWeMatchmaking() ) //Party member, party leader is already searching
- return
-
- entity player = GetUIPlayer()
- if ( !player )
- return
-
- string lastPlaylist = expect string( player.GetPersistentVar( "lastPlaylist" ) )
-
- //Bump player out of match making if they were playing coliseum and are out of tickets.
- if ( ("coliseum" == lastPlaylist) && Player_GetColiseumTicketCount( GetLocalClientPlayer() ) <= 0 )
- {
- SetNextAutoMatchmakingPlaylist( "" )
- return
- }
-
- // Need to know if you were a party member before the countdown starts in case you leave
- bool wasAPartyMemberThatIsNotLeader = AmIPartyMember()
- waitthread WaitBeforeRestartingMatchmaking()
- // Only the leader should proceed to start matchmaking
- if ( wasAPartyMemberThatIsNotLeader )
- return
-
- if ( !Console_HasPermissionToPlayMultiplayer() )
- {
- ClientCommand( "disconnect" )
- return
- }
-
- string playlistToSearch = lastPlaylist
- string nextAutoPlaylist = GetNextAutoMatchmakingPlaylist()
- if ( nextAutoPlaylist.len() > 0 )
- playlistToSearch = nextAutoPlaylist
-
- StartMatchmakingPlaylists( playlistToSearch )
-}
-
-void function WaitBeforeRestartingMatchmaking()
-{
- Signal( uiGlobal.signalDummy, "BypassWaitBeforeRestartingMatchmaking" )
- EndSignal( uiGlobal.signalDummy, "BypassWaitBeforeRestartingMatchmaking" )
-
- float timeToWait
-
- bool isPartyMemberThatIsNotLeader = AmIPartyMember()
- SetPutPlayerInMatchmakingAfterDelay( !isPartyMemberThatIsNotLeader )
-
- if ( isPartyMemberThatIsNotLeader )
- timeToWait = 99999 //HACK, JFS
- else
- timeToWait = GetCurrentPlaylistVarFloat( "wait_before_restarting_matchmaking_time", 30.0 )
-
- float timeToEnd = Time() + timeToWait
-
- UpdateTimeToRestartMatchmaking( timeToEnd )
-
- OnThreadEnd(
- function() : ( )
- {
- UpdateTimeToRestartMatchmaking( 0.0 )
- UpdateFooterOptions()
- }
- )
-
- if ( isPartyMemberThatIsNotLeader )
- {
- while( Time() < timeToEnd ) //Hack hack, JFS. No appropriate signals for StartMatchmaking() being called. Replace when code gives us notifications about it
- {
- if ( isPartyMemberThatIsNotLeader != ( AmIPartyMember() ) ) //Party Status changed. Party leader probably left?
- break
-
- if ( AreWeMatchmaking() ) //Need to break out if Party Leader brings us into matchmaking
- break
-
- WaitFrame()
- }
-
- }
- else
- {
- wait timeToWait
- }
-}
-
-void function OnLobbyMenu_Close()
-{
- Signal( uiGlobal.signalDummy, "OnCloseLobbyMenu" )
-}
-
-void function OnLobbyMenu_NavigateBack()
-{
- if ( ChatroomIsVisibleAndFocused() )
- {
- foreach ( button in file.lobbyButtons )
- {
- if ( Hud_IsVisible( button ) && Hud_IsEnabled( button ) && !Hud_IsLocked( button ) )
- {
- Hud_SetFocused( button )
- return
- }
- }
- }
-
- if ( InPendingOpenInvite() )
- LeaveOpenInvite()
- else
- LeaveDialog()
-}
-
-function GameStartTime_Changed()
-{
- UpdateGameStartTimeCounter()
-}
-
-function ShowGameSummary_Changed()
-{
- if ( level.ui.showGameSummary )
- uiGlobal.EOGOpenInLobby = true
-}
-
-function UpdateGameStartTimeCounter()
-{
- if ( level.ui.gameStartTime == null )
- return
-
- MatchmakingSetSearchText( "#STARTING_IN_LOBBY" )
- MatchmakingSetCountdownTimer( expect float( level.ui.gameStartTime + 0.0 ), true )
-
- HideMatchmakingStatusIcons()
-}
-
-bool function MatchmakingStatusShouldShowAsActiveSearch( string matchmakingStatus )
-{
- if ( matchmakingStatus == "#MATCHMAKING_QUEUED" )
- return true
- if ( matchmakingStatus == "#MATCHMAKING_ALLOCATING_SERVER" )
- return true
- if ( matchmakingStatus == "#MATCHMAKING_MATCH_CONNECTING" )
- return true
-
- return false
-}
-
-string function GetActiveSearchingPlaylist()
-{
- if ( !IsConnected() )
- return ""
- if ( !AreWeMatchmaking() )
- return ""
-
- string matchmakingStatus = GetMyMatchmakingStatus()
- if ( !MatchmakingStatusShouldShowAsActiveSearch( matchmakingStatus ) )
- return ""
-
- string param1 = GetMyMatchmakingStatusParam( 1 )
- return param1
-}
-
-float function CalcMatchmakingWaitTime()
-{
- float result = ((file.matchmakingStartTime > 0.01) ? (Time() - file.matchmakingStartTime) : 0.0)
- return result
-}
-
-float function GetMixtapeWaitTimeForPlaylist( string playlistName )
-{
- float maxWaitTime = float( GetPlaylistVarOrUseValue( playlistName, "mixtape_timeout", "0" ) )
- return maxWaitTime
-}
-
-void function UpdateRestartMatchmakingStatus( float time )
-{
- if ( AmIPartyMember() )
- {
- MatchmakingSetSearchText( "#MATCHMAKING_WAIT_ON_PARTY_LEADER_RESTARTING_MATCHMAKING" )
- }
- else
- {
- string statusText = "#MATCHMAKING_WAIT_BEFORE_RESTARTING_MATCHMAKING"
- string matchmakeNowText = ""
- if ( uiGlobal.activeMenu == GetMenu( "SearchMenu" ) )
- matchmakeNowText = Localize( "#MATCHMAKING_WAIT_MATCHMAKE_NOW" )
- MatchmakingSetSearchText( statusText, matchmakeNowText )
- MatchmakingSetCountdownTimer( time, false )
- }
-}
-
-void function UpdateMatchmakingStatus()
-{
- EndSignal( uiGlobal.signalDummy, "CleanupInGameMenus" )
-
- OnThreadEnd(
- function() : ()
- {
- printt( "Hiding all matchmaking elems due to UpdateMatchmakingStatus thread ending" )
-
- HideMatchmakingStatusIcons()
-
- MatchmakingSetSearchText( "" )
- MatchmakingSetCountdownTimer( 0.0, true )
-
- MatchmakingSetSearchVisible( false )
- MatchmakingSetCountdownVisible( false )
- }
- )
-
- MatchmakingSetSearchVisible( true )
- MatchmakingSetCountdownVisible( true )
-
- var lobbyMenu = GetMenu( "LobbyMenu" )
- var searchMenu = GetMenu( "SearchMenu" )
- var postGameMenu = GetMenu( "PostGameMenu" )
-
- string lastActiveSearchingPlaylist
- file.matchmakingStartTime = 0.0
- file.etaTime = 0
- file.etaMaxMinutes = int( GetCurrentPlaylistVarOrUseValue( "etaMaxMinutes", file.etaMaxMinutes ) )
- file.lastMixtapeMatchmakingStatus = ""
-
- while ( true )
- {
- int lobbyType = GetLobbyTypeScript()
- string matchmakingStatus = GetMyMatchmakingStatus()
- bool isConnectingToMatch = matchmakingStatus == "#MATCHMAKING_MATCH_CONNECTING"
-
- {
- string activeSearchingPlaylist = GetActiveSearchingPlaylist()
- if ( lastActiveSearchingPlaylist != activeSearchingPlaylist )
- {
- if ( activeSearchingPlaylist.len() > 0 )
- {
- lastActiveSearchingPlaylist = activeSearchingPlaylist
- file.matchmakingStartTime = Time()
- }
- else
- {
- lastActiveSearchingPlaylist = ""
- file.matchmakingStartTime = 0.0
- }
- }
-
- if ( isConnectingToMatch && (matchmakingStatus != file.lastMixtapeMatchmakingStatus) )
- {
- EmitUISound( MATCHMAKING_AUDIO_CONNECTING )
-
- int mixtape_version = GetMixtapeMatchmakingVersion()
- if ( IsMixtapeVersionNew() )
- LogMixtapeHasNew( mixtape_version )
- }
-
- file.lastMixtapeMatchmakingStatus = matchmakingStatus
- }
-
- if ( level.ui.gameStartTime != null || lobbyType == eLobbyType.PRIVATE_MATCH )
- {
- if ( level.ui.gameStartTimerComplete )
- {
- MatchmakingSetSearchText( matchmakingStatus, GetMyMatchmakingStatusParam( 1 ), GetMyMatchmakingStatusParam( 2 ), GetMyMatchmakingStatusParam( 3 ), GetMyMatchmakingStatusParam( 4 ) )
- }
-
- if ( uiGlobal.activeMenu == searchMenu )
- CloseActiveMenu()
- }
- else if ( GetTimeToRestartMatchMaking() > 0 )
- {
- UpdateRestartMatchmakingStatus( GetTimeToRestartMatchMaking() )
- }
- else if ( level.ui.gameStartTime == null )
- {
- MatchmakingSetCountdownTimer( 0.0, true )
- MatchmakingSetSearchText( "" )
- HideMatchmakingStatusIcons()
-
- if ( !IsConnected() || !AreWeMatchmaking() )
- {
- if ( uiGlobal.activeMenu == searchMenu )
- CloseActiveMenu()
- }
- else
- {
- ShowMatchmakingStatusIcons()
-
- if ( GetActiveMenu() == lobbyMenu && !IsMenuInMenuStack( searchMenu ) )
- {
- CloseAllDialogs()
- AdvanceMenu( searchMenu )
- }
-
- var statusEl = Hud_GetChild( searchMenu, "MatchmakingStatusBig" )
- if ( matchmakingStatus == "#MATCH_NOTHING" )
- {
- Hud_Hide( statusEl )
- }
- else if ( MatchmakingStatusShouldShowAsActiveSearch( matchmakingStatus ) )
- {
- string playlistName = GetMyMatchmakingStatusParam( 1 )
- int etaSeconds = int( GetMyMatchmakingStatusParam( 2 ) )
- int mapIdx = int( GetMyMatchmakingStatusParam( 3 ) )
- int modeIdx = int( GetMyMatchmakingStatusParam( 4 ) )
- string playlistList = GetMyMatchmakingStatusParam( 5 )
-
- {
- string statusText = Localize( "#MATCHMAKING_PLAYLISTS" )
- RuiSetString( Hud_GetRui( statusEl ), "statusText", statusText )
- for ( int idx = 1; idx <= 5; ++idx )
- RuiSetString( Hud_GetRui( statusEl ), ("bulletPointText" + idx), "" )
-
- const int MAX_SHOWN_PLAYLISTS = 9
- array< string > searchingPlaylists = split( playlistList, "," )
- int searchingCount = minint( searchingPlaylists.len(), MAX_SHOWN_PLAYLISTS )
- RuiSetInt( Hud_GetRui( statusEl ), "playlistCount", searchingCount )
- for( int idx = 0; idx < searchingCount; ++idx )
- {
- asset playlistThumbnail = GetPlaylistThumbnailImage( searchingPlaylists[idx] )
- RuiSetImage( Hud_GetRui( statusEl ), format( "playlistIcon%d", idx ), playlistThumbnail )
- }
- }
-
- Hud_Show( statusEl )
-
- if ( mapIdx > -1 && modeIdx > -1 )
- {
- if ( file.preCacheInfo.playlistName != playlistName || file.preCacheInfo.mapIdx != mapIdx || file.preCacheInfo.modeIdx != modeIdx )
- {
- file.preCacheInfo.playlistName = playlistName
- file.preCacheInfo.mapIdx = mapIdx
- file.preCacheInfo.modeIdx = modeIdx
- }
- }
-
- string etaStr = ""
- if ( !etaSeconds && !isConnectingToMatch )
- {
- matchmakingStatus = "#MATCHMAKING_SEARCHING_FOR_MATCH"
- }
- else
- {
- int now = int( Time() )
- int etaTime = now + etaSeconds
- if ( !file.etaTime || etaTime < file.etaTime )
- file.etaTime = etaTime
-
- int etaSeconds = file.etaTime - now
- if ( etaSeconds <= 0 )
- file.etaTime = etaTime
-
- etaSeconds = file.etaTime - now
- if ( etaSeconds <= 90 )
- {
- etaStr = Localize( "#MATCHMAKING_ETA_SECONDS", etaSeconds )
- }
- else
- {
- int etaMinutes = int( ceil( etaSeconds / 60.0 ) )
- if ( etaMinutes < file.etaMaxMinutes )
- etaStr = Localize( "#MATCHMAKING_ETA_MINUTES", etaMinutes )
- else
- etaStr = Localize( "#MATCHMAKING_ETA_UNKNOWN", etaMinutes )
- }
- }
-
- MatchmakingSetSearchText( matchmakingStatus, etaStr )
- }
- else
- {
- Hud_Show( statusEl )
- RuiSetString( Hud_GetRui( statusEl ), "statusText", "" )
- RuiSetInt( Hud_GetRui( statusEl ), "playlistCount", 0 )
- }
- }
- }
-
- WaitFrameOrUntilLevelLoaded()
- }
-}
-
-void function UpdateAnnouncementDialog()
-{
- while ( IsLobby() && IsFullyConnected() )
- {
- // Only safe on these menus. Not safe if these variables are true because they indicate the search menu or postgame menu are going to be opened.
- if ( ( uiGlobal.activeMenu == GetMenu( "LobbyMenu" ) || uiGlobal.activeMenu == GetMenu( "PrivateLobbyMenu" ) ) && !file.putPlayerInMatchmakingAfterDelay && !uiGlobal.EOGOpenInLobby )
- {
- entity player = GetUIPlayer()
-
- // Only initialize here, CloseAnnouncementDialog() handles setting it when closing
- if ( uiGlobal.announcementVersionSeen == -1 )
- uiGlobal.announcementVersionSeen = player.GetPersistentVarAsInt( "announcementVersionSeen" )
-
- int announcementVersion = GetConVarInt( "announcementVersion" )
- if ( announcementVersion > uiGlobal.announcementVersionSeen )
- {
- OpenAnnouncementDialog()
- }
- else if ( uiGlobal.activeMenu != "AnnouncementDialog" && ShouldShowEmotesAnnouncement( player ) )
- {
- OpenCommsIntroDialog()
- }
- }
-
- WaitFrame()
- }
-}
-
-bool function CurrentMenuIsPVEMenu()
-{
- var topMenu = GetTopNonDialogMenu()
- if ( topMenu == null )
- return false
-
- return (uiGlobal.menuData[topMenu].isPVEMenu)
-}
-
-void function RefreshCreditsAvailable( int creditsOverride = -1 )
-{
- entity player = GetUIPlayer()
- if ( !IsValid( player ) )
- return
- if ( !IsPersistenceAvailable() )
- return
-
- int credits = creditsOverride >= 0 ? creditsOverride : GetAvailableCredits( GetLocalClientPlayer() )
- string pveTitle = ""
- int pveCredits = 0
- bool isPVE = CurrentMenuIsPVEMenu()
- if ( isPVE )
- {
- TitanLoadoutDef loadout = GetCachedTitanLoadout( uiGlobal.editingLoadoutIndex )
- pveCredits = GetAvailableFDUnlockPoints( player, loadout.titanClass )
- pveTitle = GetTitanLoadoutName( loadout )
- }
-
- foreach ( elem in file.creditsAvailableElems )
- {
- SetUIPlayerCreditsInfo( elem, credits, GetLocalClientPlayer().GetXP(), GetGen(), GetLevel(), GetNextLevel( GetLocalClientPlayer() ), isPVE, pveCredits, pveTitle )
- }
-}
-
-void function SetUIPlayerCreditsInfo( var infoElement, int credits, int xp, int gen, int level, int nextLevel, bool isPVE, int pveCredits, string pveTitle )
-{
- var rui = Hud_GetRui( infoElement )
- RuiSetInt( rui, "credits", credits )
- RuiSetString( rui, "nameText", GetPlayerName() )
-
- RuiSetBool( rui, "isPVE", isPVE )
- if ( isPVE )
- {
- RuiSetInt( rui, "pveCredits", pveCredits )
- RuiSetString( rui, "pveTitle", pveTitle )
- }
-
- if ( xp == GetMaxPlayerXP() && gen < MAX_GEN )
- {
- RuiSetString( rui, "levelText", PlayerXPDisplayGenAndLevel( gen, level ) )
- RuiSetString( rui, "nextLevelText", Localize( "#REGEN_AVAILABLE" ) )
- RuiSetInt( rui, "numLevelPips", GetXPPipsForLevel( level - 1 ) )
- RuiSetInt( rui, "filledLevelPips", GetXPPipsForLevel( level - 1 ) )
- }
- else if ( xp == GetMaxPlayerXP() && gen == MAX_GEN )
- {
- RuiSetString( rui, "levelText", PlayerXPDisplayGenAndLevel( gen, level ) )
- RuiSetString( rui, "nextLevelText", Localize( "#MAX_GEN" ) )
- RuiSetInt( rui, "numLevelPips", GetXPPipsForLevel( level - 1 ) )
- RuiSetInt( rui, "filledLevelPips", GetXPPipsForLevel( level - 1 ) )
- }
- else
- {
- RuiSetString( rui, "levelText", PlayerXPDisplayGenAndLevel( gen, level ) )
- RuiSetString( rui, "nextLevelText", PlayerXPDisplayGenAndLevel( gen, nextLevel ) )
- RuiSetInt( rui, "numLevelPips", GetXPPipsForLevel( level ) )
- RuiSetInt( rui, "filledLevelPips", GetXPFilledPipsForXP( xp ) )
- }
-
- CallsignIcon callsignIcon = PlayerCallsignIcon_GetActive( GetLocalClientPlayer() )
-
- RuiSetImage( rui, "callsignIcon", callsignIcon.image )
-}
-
-void function OpenServerBrowser( var button )
-{
- if ( Hud_IsLocked( button ) )
- return
-
- // nothing here yet lol
- // look at OpenSelectedPlaylistMenu for advancing to server browser menu probably
- AdvanceMenu( GetMenu( "ServerBrowserMenu" ) )
-}
-
-void function BigPlayButton1_Activate( var button )
-{
- if ( Hud_IsLocked( button ) )
- return
-
- SendOpenInvite( false )
- OpenSelectedPlaylistMenu()
-}
-
-function EnableButton( button )
-{
- Hud_SetEnabled( button, true )
- Hud_Show( button )
-}
-
-function DisableButton( button )
-{
- Hud_SetEnabled( button, false )
- Hud_Hide( button )
-}
-
-void function OpenSelectedPlaylistMenu()
-{
- if ( Lobby_IsFDMode() )
- {
- AdvanceMenu( GetMenu( "FDMenu" ) )
- }
- else
- {
- string playlistMenuName = GetPlaylistMenuName()
- AdvanceMenu( GetMenu( playlistMenuName ) )
- }
-}
-
-function UpdateLobbyUI()
-{
- if ( uiGlobal.updatingLobbyUI )
- return
- uiGlobal.updatingLobbyUI = true
-
- thread UpdateLobbyType()
- thread UpdateMatchmakingStatus()
- thread UpdateChatroomThread()
- //thread UpdateInviteJoinButton()
- thread UpdateInviteFriendsToNetworkButton()
- thread UpdatePlayerInfo()
-
- if ( uiGlobal.menuToOpenFromPromoButton != null )
- {
- // Special case because this menu needs a few properties set before opening
-
- if ( IsStoreMenu( uiGlobal.menuToOpenFromPromoButton ) )
- {
- string menuName = expect string( uiGlobal.menuToOpenFromPromoButton._name )
-
- void functionref() preOpenfunc = null
- if ( uiGlobal.menuToOpenFromPromoButton == GetMenu( "StoreMenu_WeaponSkins" ) ) // Hardcoded special case for now
- preOpenfunc = DefaultToDLC11WeaponWarpaintBundle
-
- OpenStoreMenu( [ menuName ], preOpenfunc )
- }
- else
- {
- AdvanceMenu( uiGlobal.menuToOpenFromPromoButton )
- }
-
- uiGlobal.menuToOpenFromPromoButton = null
- }
- else if ( uiGlobal.EOGOpenInLobby )
- {
- EOGOpen()
- }
-
- WaitSignal( uiGlobal.signalDummy, "CleanupInGameMenus" )
- uiGlobal.updatingLobbyUI = false
-}
-
-void function UpdateInviteJoinButton()
-{
- EndSignal( uiGlobal.signalDummy, "CleanupInGameMenus" )
- var menu = GetMenu( "LobbyMenu" )
-
- while ( true )
- {
- if ( DoesCurrentCommunitySupportInvites() )
- ComboButton_SetText( file.inviteRoomButton, Localize( "#MENU_TITLE_INVITE_ROOM" ) )
- else
- ComboButton_SetText( file.inviteRoomButton, Localize( "#MENU_TITLE_JOIN_NETWORK" ) )
-
- WaitFrame()
- }
-}
-
-void function UpdateInviteFriendsToNetworkButton()
-{
- EndSignal( uiGlobal.signalDummy, "CleanupInGameMenus" )
- var menu = GetMenu( "LobbyMenu" )
-
- while ( true )
- {
- bool areInvitesToNetworkNotAllowed = !DoesCurrentCommunitySupportChat()
- if ( areInvitesToNetworkNotAllowed || ( IsCurrentCommunityInviteOnly() && !AreWeAdminInCurrentCommunity() ) )
- DisableButton( file.inviteFriendsToNetworkButton )
- else
- EnableButton( file.inviteFriendsToNetworkButton )
-
- WaitFrame()
- }
-}
-
-function UpdateLobbyType()
-{
- EndSignal( uiGlobal.signalDummy, "CleanupInGameMenus" )
-
- var menu = GetMenu( "LobbyMenu" )
- int lobbyType
- local lastType
- local partySize
- local lastPartySize
- local debugArray = [ "SOLO", "PARTY_LEADER", "PARTY_MEMBER", "MATCH", "PRIVATE_MATCH" ] // Must match enum
-
- WaitFrameOrUntilLevelLoaded()
-
- while ( true )
- {
- lobbyType = GetLobbyTypeScript()
- partySize = GetPartySize()
-
- if ( IsConnected() && ((lobbyType != lastType) || (partySize != lastPartySize)) )
- {
- if ( lastType == null )
- printt( "Lobby lobbyType changing from:", lastType, "to:", debugArray[lobbyType] )
- else
- printt( "Lobby lobbyType changing from:", debugArray[lastType], "to:", debugArray[lobbyType] )
-
- local animation = null
-
- switch ( lobbyType )
- {
- case eLobbyType.SOLO:
- animation = "SoloLobby"
- break
-
- case eLobbyType.PARTY_LEADER:
- animation = "PartyLeaderLobby"
- break
-
- case eLobbyType.PARTY_MEMBER:
- animation = "PartyMemberLobby"
- break
-
- case eLobbyType.MATCH:
- animation = "MatchLobby"
- break
-
- case eLobbyType.PRIVATE_MATCH:
- animation = "PrivateMatchLobby"
- break
- }
-
- if ( animation != null )
- {
- menu.RunAnimationScript( animation )
- }
-
- // Force the animation scripts (which have zero duration) to complete before anything can cancel them.
- ForceUpdateHUDAnimations()
-
- lastType = lobbyType
- lastPartySize = partySize
- }
-
- WaitFrameOrUntilLevelLoaded()
- }
-}
-
-void function UICodeCallback_CommunityUpdated()
-{
- Community_CommunityUpdated()
- UpdateChatroomUI()
-}
-
-void function UICodeCallback_FactionUpdated()
-{
- printt( "Faction changed! to " + GetCurrentFaction() );
-}
-
-void function UICodeCallback_SetupPlayerListGenElements( table params, int gen, int rank, bool isPlayingRanked, int pilotClassIndex )
-{
- params.image = ""
- params.label = ""
- params.imageOverlay = ""
-}
-
-float function GetTimeToRestartMatchMaking()
-{
- return file.timeToRestartMatchMaking
-}
-
-void function UpdateTimeToRestartMatchmaking( float time )//JFS: This uses UI time instead of server time, which leads to awkwardness in MatchmakingSetCountdownTimer() and the rui involved
-{
- file.timeToRestartMatchMaking = time
-
- if ( time > 0 )
- {
- UpdateRestartMatchmakingStatus( time )
- ShowMatchmakingStatusIcons()
- }
- else
- {
- MatchmakingSetSearchText( "" )
- MatchmakingSetCountdownTimer( 0.0, true )
- HideMatchmakingStatusIcons()
- }
-}
-
-void function HideMatchmakingStatusIcons()
-{
- foreach ( element in file.searchIconElems )
- Hud_Hide( element )
-
- foreach ( element in file.matchStatusRuis )
- RuiSetBool( Hud_GetRui( element ), "iconVisible", false )
-}
-
-void function ShowMatchmakingStatusIcons()
-{
- //foreach ( element in file.searchIconElems )
- // Hud_Show( element )
-
- foreach ( element in file.matchStatusRuis )
- RuiSetBool( Hud_GetRui( element ), "iconVisible", true )
-}
-
-void function MatchmakingSetSearchVisible( bool state )
-{
- foreach ( el in file.searchTextElems )
- {
- //if ( state )
- // Hud_Show( el )
- //else
- Hud_Hide( el )
- }
-
- foreach ( element in file.matchStatusRuis )
- RuiSetBool( Hud_GetRui( element ), "statusVisible", state )
-}
-
-void function MatchmakingSetSearchText( string searchText, var param1 = "", var param2 = "", var param3 = "", var param4 = "" )
-{
- foreach ( el in file.searchTextElems )
- {
- Hud_SetText( el, searchText, param1, param2, param3, param4 )
- }
-
- foreach ( element in file.matchStatusRuis )
- {
- RuiSetBool( Hud_GetRui( element ), "statusHasText", searchText != "" )
-
- RuiSetString( Hud_GetRui( element ), "statusText", Localize( searchText, param1, param2, param3, param4 ) )
- }
-}
-
-
-void function MatchmakingSetCountdownVisible( bool state )
-{
- foreach ( el in file.matchStartCountdownElems )
- {
- //if ( state )
- // Hud_Show( el )
- //else
- Hud_Hide( el )
- }
-
- foreach ( element in file.matchStatusRuis )
- RuiSetBool( Hud_GetRui( element ), "timerVisible", state )
-}
-
-void function MatchmakingSetCountdownTimer( float time, bool useServerTime = true ) //JFS: useServerTime bool is awkward, comes from level.ui.gameStartTime using server time and UpdateTimeToRestartMatchmaking() uses UI time.
-{
- foreach ( element in file.matchStatusRuis )
- {
- RuiSetBool( Hud_GetRui( element ), "timerHasText", time != 0.0 )
- RuiSetGameTime( Hud_GetRui( element ), "startTime", Time() )
- RuiSetBool( Hud_GetRui( element ), "useServerTime", useServerTime )
- RuiSetGameTime( Hud_GetRui( element ), "timerEndTime", time )
- }
-}
-
-void function OnLobbyLevelInit()
-{
- UpdateCallsignElement( file.callsignCard )
- RefreshCreditsAvailable()
-}
-
-function UpdatePlayerInfo()
-{
- EndSignal( uiGlobal.signalDummy, "CleanupInGameMenus" )
-
- var menu = GetMenu( "LobbyMenu" )
-
- WaitFrameOrUntilLevelLoaded()
-
- while ( true )
- {
- RefreshCreditsAvailable()
- WaitFrame()
- }
-}
-
-void function TryUnlockSRSCallsign()
-{
- if ( Script_IsRunningTrialVersion() )
- return
-
- int numCallsignsToUnlock = 0
-
- if ( GetTotalLionsCollected() >= GetTotalLionsInGame() )
- numCallsignsToUnlock = 3
- else if ( GetTotalLionsCollected() >= ACHIEVEMENT_COLLECTIBLES_2_COUNT )
- numCallsignsToUnlock = 2
- else if ( GetTotalLionsCollected() >= ACHIEVEMENT_COLLECTIBLES_1_COUNT )
- numCallsignsToUnlock = 1
- else
- numCallsignsToUnlock = 0
-
- if ( numCallsignsToUnlock > 0 )
- ClientCommand( "UnlockSRSCallsign " + numCallsignsToUnlock )
-}
-
-void function SetPutPlayerInMatchmakingAfterDelay( bool value )
-{
- file.putPlayerInMatchmakingAfterDelay = value
-}
-
-void function OnStoreButton_Activate( var button )
-{
- LaunchGamePurchaseOrDLCStore()
-}
-
-void function OnStoreNewReleasesButton_Activate( var button )
-{
- //LaunchGamePurchaseOrDLCStore( [ "StoreMenu", "StoreMenu_NewReleases" ] )
- LaunchGamePurchaseOrDLCStore( [ "StoreMenu", "StoreMenu_WeaponSkins" ] )
-}
-
-void function OnStoreBundlesButton_Activate( var button )
-{
- LaunchGamePurchaseOrDLCStore( [ "StoreMenu", "StoreMenu_Sales" ] )
-}
-
-void function OnDpadCommsButton_Activate( var button )
-{
- AdvanceMenu( GetMenu( "EditDpadCommsMenu" ) )
-}
-
-void function OpenCommsIntroDialog()
-{
- DialogData dialogData
- dialogData.menu = GetMenu( "AnnouncementDialog" )
- dialogData.header = "#DPAD_COMMS_ANNOUNCEMENT_HEADER"
- dialogData.ruiMessage.message = "#DPAD_COMMS_ANNOUNCEMENT"
- dialogData.image = $"ui/menu/common/dialog_announcement_1"
-
- AddDialogButton( dialogData, "#DPAD_COMMS_ANNOUNCEMENT_B1" , OpenDpadCommsMenu )
- AddDialogButton( dialogData, "#DPAD_COMMS_ANNOUNCEMENT_B2" )
-
- AddDialogPCBackButton( dialogData )
- AddDialogFooter( dialogData, "#A_BUTTON_ACCEPT" )
- AddDialogFooter( dialogData, "#B_BUTTON_BACK" )
-
- OpenDialog( dialogData )
-
- ClientCommand( "SetCommsIntroSeen" )
-}
-
-void function OpenDpadCommsMenu()
-{
- OnDpadCommsButton_Activate( null )
-}
-
-bool function ShouldShowEmotesAnnouncement( entity player )
-{
- if ( !EmotesEnabled() )
- return false
-
- if ( player.GetPersistentVarAsInt( "numTimesUsedComms" ) > 2 )
- return false
-
- if ( player.GetPersistentVar( "hasBeenIntroducedToComms" ) )
- return false
-
- #if !DEV
- if ( PlayerGetRawLevel( player ) <= 2 )
- return false
- #endif
-
- return true
-}
-
-void function Lobby_SetFDMode( bool mode )
-{
- file.isFDMode = mode
-}
-
-//Function returns whether lobby is currently in "Frontier Defense" lobby mode.
-bool function Lobby_IsFDMode()
-{
- return file.isFDMode
-}
-
-void function Lobby_SetAutoFDOpen( bool autoFD )
-{
- Lobby_SetFDMode( autoFD )
- file.shouldAutoOpenFDMenu = autoFD
-}
-
-void function Lobby_SetFDModeBasedOnSearching( string playlistToSearch )
-{
- array< string > searchingPlaylists = split( playlistToSearch, "," )
-
- bool isFDMode = false
- int searchingCount = searchingPlaylists.len()
- for( int idx = 0; idx < searchingCount; ++idx )
- {
- isFDMode = isFDMode || IsFDMode( searchingPlaylists[idx] )
- if ( isFDMode )
- break
- }
-
- Lobby_SetFDMode( isFDMode )
-} \ No newline at end of file