From e79a58640e1ef1ea1c3c954aefccd36c3cb55286 Mon Sep 17 00:00:00 2001 From: BobTheBob <32057864+BobTheBob9@users.noreply.github.com> Date: Wed, 20 Oct 2021 20:11:43 +0100 Subject: automatic mod enable/disable, refactors and item registration callbacks --- .../scripts/vscripts/ui/menu_ns_serverbrowser.nut | 53 ++++++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) (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 index 121de6141..29c1f81a2 100644 --- a/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut +++ b/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut @@ -161,7 +161,11 @@ string function FormatServerDescription( int server ) ret += NSGetServerName( server ) + "\n" ret += format( "%i/%i players\n", NSGetServerPlayerCount( server ), NSGetServerMaxPlayerCount( server ) ) - ret += NSGetServerDescription( server ) + "\n" + ret += NSGetServerDescription( server ) + "\n\n" + + ret += "Required Mods: \n" + for ( int i = 0; i < NSGetServerRequiredModsCount( server ); i++ ) + ret += " " + NSGetServerRequiredModName( server, i ) + " v" + NSGetServerRequiredModVersion( server, i ) + "\n" return ret } @@ -170,6 +174,36 @@ void function OnServerSelected( var button ) { if ( NSIsRequestingServerList() || !NSMasterServerConnectionSuccessful() ) return + + int server = int( Hud_GetScriptID( button ) ) + + // check mods + for ( int i = 0; i < NSGetServerRequiredModsCount( server ); i++ ) + { + if ( !NSGetModNames().contains( NSGetServerRequiredModName( server, i ) ) ) + { + DialogData dialogData + dialogData.header = "#ERROR" + dialogData.message = "Missing mod \"" + NSGetServerRequiredModName( server, i ) + "\" v" + NSGetServerRequiredModVersion( server, i ) + dialogData.image = $"ui/menu/common/dialog_error" + + #if PC_PROG + AddDialogButton( dialogData, "#DISMISS" ) + + AddDialogFooter( dialogData, "#A_BUTTON_SELECT" ) + #endif // PC_PROG + AddDialogFooter( dialogData, "#B_BUTTON_DISMISS_RUI" ) + + OpenDialog( dialogData ) + + return + } + else + { + string modVersion = NSGetServerRequiredModVersion( server, i ) + // check this is sorta valid semver, d + } + } var menu = GetMenu( "ServerBrowserMenu" ) int serverIndex = file.page * BUTTONS_PER_PAGE + int ( Hud_GetScriptID( button ) ) @@ -194,11 +228,22 @@ void function ThreadedAuthAndConnectToServer( string password = "" ) WaitFrame() if ( NSWasAuthSuccessful() ) - NSConnectToAuthedServer() - else { - print( "fuck" ) + array requiredMods + for ( int i = 0; i < NSGetServerRequiredModsCount( file.lastSelectedServer ); i++ ) + requiredMods.append( NSGetServerRequiredModName( file.lastSelectedServer, i ) ) + // unload mods we don't need, load necessary ones and reload mods before connecting + foreach ( string mod in NSGetModNames() ) + if ( NSIsModRequiredOnClient( mod ) ) + NSSetModEnabled( mod, requiredMods.contains( mod ) ) + + ReloadMods() + + NSConnectToAuthedServer() + } + else + { DialogData dialogData dialogData.header = "#ERROR" dialogData.message = "Authentication Failed" -- cgit v1.2.3