From 9a96d0bff56f1969c68bb52a2f33296095bdc67d Mon Sep 17 00:00:00 2001 From: BobTheBob <32057864+BobTheBob9@users.noreply.github.com> Date: Tue, 31 Aug 2021 23:14:58 +0100 Subject: move to new mod format --- .../scripts/vscripts/ui/menu_ns_serverbrowser.nut | 198 +++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut (limited to 'Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut') diff --git a/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut b/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut new file mode 100644 index 000000000..bbeb0d0b9 --- /dev/null +++ b/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut @@ -0,0 +1,198 @@ +global function AddNorthstarServerBrowserMenu +global function ThreadedAuthAndConnectToServer + +const int BUTTONS_PER_PAGE = 15 + +struct { + int page = 0 + int lastSelectedServer = 0 +} file + +void function AddNorthstarServerBrowserMenu() +{ + AddMenu( "ServerBrowserMenu", $"resource/ui/menus/server_browser.menu", InitServerBrowserMenu, "#MENU_SERVER_BROWSER" ) +} + +void function InitServerBrowserMenu() +{ + AddMenuEventHandler( GetMenu( "ServerBrowserMenu" ), eUIEvent.MENU_OPEN, OnServerBrowserMenuOpened ) + AddMenuFooterOption( GetMenu( "ServerBrowserMenu" ), BUTTON_B, "#B_BUTTON_BACK", "#BACK" ) + AddMenuFooterOption( GetMenu( "ServerBrowserMenu" ), BUTTON_Y, "#Y_REFRESH_SERVERS", "#REFRESH_SERVERS", RefreshServers ) + + foreach ( var button in GetElementsByClassname( GetMenu( "ServerBrowserMenu" ), "ServerButton" ) ) + { + AddButtonEventHandler( button, UIE_GET_FOCUS, OnServerFocused ) + AddButtonEventHandler( button, UIE_CLICK, OnServerSelected ) + } +} + +void function OnServerBrowserMenuOpened() +{ + Hud_SetText( Hud_GetChild( GetMenu( "ServerBrowserMenu" ), "Title" ), "#MENU_TITLE_SERVER_BROWSER" ) + UI_SetPresentationType( ePresentationType.KNOWLEDGEBASE_MAIN ) + + file.page = 0 + // dont rerequest if we came from the connect menu + if ( !NSIsRequestingServerList() && uiGlobal.lastMenuNavDirection != MENU_NAV_BACK ) + { + NSClearRecievedServerList() + NSRequestServerList() + } + + thread WaitForServerListRequest() +} + +void function RefreshServers( var button ) +{ + if ( NSIsRequestingServerList() ) + return + + NSClearRecievedServerList() + NSRequestServerList() + + thread WaitForServerListRequest() +} + +void function WaitForServerListRequest() +{ + var menu = GetMenu( "ServerBrowserMenu" ) + array serverButtons = GetElementsByClassname( menu, "ServerButton" ) + foreach ( var button in serverButtons ) + { + Hud_SetEnabled( button, false ) + Hud_SetVisible( button, false ) + } + + Hud_SetVisible( Hud_GetChild( menu, "LabelDetails" ), false ) + Hud_SetVisible( Hud_GetChild( menu, "NextMapImage" ), false ) + Hud_SetVisible( Hud_GetChild( menu, "NextMapName" ), false ) + Hud_SetVisible( Hud_GetChild( menu, "NextModeIcon" ), false ) + Hud_SetVisible( Hud_GetChild( menu, "NextGameModeName" ), false ) + + Hud_SetEnabled( serverButtons[ 0 ], true ) + Hud_SetVisible( serverButtons[ 0 ], true ) + + SetButtonRuiText( serverButtons[ 0 ], "#NS_SERVERBROWSER_WAITINGFORSERVERS" ) + + // wait for request to complete + while ( NSIsRequestingServerList() ) + WaitFrame() + + if ( !NSMasterServerConnectionSuccessful() ) + SetButtonRuiText( serverButtons[ 0 ], "#NS_SERVERBROWSER_CONNECTIONFAILED" ) + else + UpdateShownPage() +} + +void function UpdateShownPage() +{ + var menu = GetMenu( "ServerBrowserMenu" ) + + // hide old ui elements + array serverButtons = GetElementsByClassname( menu, "ServerButton" ) + foreach ( var button in serverButtons ) + { + Hud_SetEnabled( button, false ) + Hud_SetVisible( button, false ) + } + + Hud_SetFocused( serverButtons[ serverButtons.len() - 1 ] ) + + Hud_SetVisible( Hud_GetChild( menu, "LabelDetails" ), false ) + Hud_SetVisible( Hud_GetChild( menu, "NextMapImage" ), false ) + Hud_SetVisible( Hud_GetChild( menu, "NextMapName" ), false ) + Hud_SetVisible( Hud_GetChild( menu, "NextModeIcon" ), false ) + Hud_SetVisible( Hud_GetChild( menu, "NextGameModeName" ), false ) + + for ( int i = 0; i < NSGetServerCount() && i < serverButtons.len(); i++ ) + { + int serverIndex = file.page * BUTTONS_PER_PAGE + i + + Hud_SetEnabled( serverButtons[ i ], true ) + Hud_SetVisible( serverButtons[ i ], true ) + SetButtonRuiText( serverButtons[ i ], NSGetServerName( serverIndex ) ) + } + + if ( NSGetServerCount() == 0 ) + { + Hud_SetEnabled( serverButtons[ 0 ], true ) + Hud_SetVisible( serverButtons[ 0 ], true ) + SetButtonRuiText( serverButtons[ 0 ], "#NS_SERVERBROWSER_NOSERVERS" ) + } +} + +void function OnServerFocused( var button ) +{ + if ( NSIsRequestingServerList() || !NSMasterServerConnectionSuccessful() || NSGetServerCount() == 0 ) + return + + var menu = GetMenu( "ServerBrowserMenu" ) + int serverIndex = file.page * BUTTONS_PER_PAGE + int ( Hud_GetScriptID( button ) ) + + // text panel + Hud_SetVisible( Hud_GetChild( menu, "LabelDetails" ), true ) + var textRui = Hud_GetRui( Hud_GetChild( menu, "LabelDetails" ) ) + RuiSetGameTime( textRui, "startTime", -99999.99 ) // make sure it skips the whole animation for showing this + RuiSetString( textRui, "messageText", FormatServerDescription( serverIndex ) ) + + // map name/image + string map = NSGetServerMap( serverIndex ) + Hud_SetVisible( Hud_GetChild( menu, "NextMapImage" ), true ) + RuiSetImage( Hud_GetRui( Hud_GetChild( menu, "NextMapImage" ) ), "basicImage", GetMapImageForMapName( map ) ) + Hud_SetVisible( Hud_GetChild( menu, "NextMapName" ), true ) + Hud_SetText( Hud_GetChild( menu, "NextMapName" ), GetMapDisplayName( map ) ) + + // mode name/image + string mode = NSGetServerPlaylist( serverIndex ) + Hud_SetVisible( Hud_GetChild( menu, "NextModeIcon" ), true ) + RuiSetImage( Hud_GetRui( Hud_GetChild( menu, "NextModeIcon" ) ), "basicImage", GetPlaylistThumbnailImage( mode ) ) + Hud_SetVisible( Hud_GetChild( menu, "NextGameModeName" ), true ) + + string displayName = GetGameModeDisplayName( mode ) + if ( displayName.len() != 0 ) + Hud_SetText( Hud_GetChild( menu, "NextGameModeName" ), displayName ) + else + Hud_SetText( Hud_GetChild( menu, "NextGameModeName" ), "#NS_SERVERBROWSER_UNKNOWNMODE" ) +} + +string function FormatServerDescription( int server ) +{ + string ret = "\n\n\n\n" + + ret += NSGetServerName( server ) + "\n" + ret += format( "%i/%i players\n", NSGetServerPlayerCount( server ), NSGetServerMaxPlayerCount( server ) ) + ret += NSGetServerDescription( server ) + "\n" + + return ret +} + +void function OnServerSelected( var button ) +{ + if ( NSIsRequestingServerList() || !NSMasterServerConnectionSuccessful() ) + return + + var menu = GetMenu( "ServerBrowserMenu" ) + int serverIndex = file.page * BUTTONS_PER_PAGE + int ( Hud_GetScriptID( button ) ) + + file.lastSelectedServer = serverIndex + + if ( NSServerRequiresPassword( serverIndex ) ) + AdvanceMenu( GetMenu( "ConnectWithPasswordMenu" ) ) + else + thread ThreadedAuthAndConnectToServer() +} + +void function ThreadedAuthAndConnectToServer( string password = "" ) +{ + if ( NSIsAuthenticatingWithServer() ) + return + + print( "trying to authenticate with server " + NSGetServerName( file.lastSelectedServer ) + " with password " + password ) + NSTryAuthWithServer( file.lastSelectedServer, password ) + + while ( NSIsAuthenticatingWithServer() ) + WaitFrame() + + if ( NSWasAuthSuccessful() ) + NSConnectToAuthedServer() +} \ No newline at end of file -- cgit v1.2.3