aboutsummaryrefslogtreecommitdiff
path: root/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut
diff options
context:
space:
mode:
authorRémy Raes <raes.remy@gmail.com>2023-12-14 22:19:08 +0100
committerGitHub <noreply@github.com>2023-12-14 22:19:08 +0100
commite49e7e8321269a3de19f07981c8974e87e9fd938 (patch)
tree5fdfe89944360636f8cbf3450cac642222780697 /Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut
parent6d678ac56b104a5c4aa2a2d9da05b163f2e1d6cd (diff)
downloadNorthstarMods-e49e7e8321269a3de19f07981c8974e87e9fd938.tar.gz
NorthstarMods-e49e7e8321269a3de19f07981c8974e87e9fd938.zip
Mod download UI integration (#761)v1.21.0-rc2v1.21.0
UI integration for the mod downloading feature. Feature activation locked behind a convar.
Diffstat (limited to 'Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut')
-rw-r--r--Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut59
1 files changed, 49 insertions, 10 deletions
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 efc8d66c..29c7621c 100644
--- a/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut
+++ b/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut
@@ -952,32 +952,64 @@ string function FillInServerModsLabel( array<RequiredModInfo> mods )
void function OnServerSelected( var button )
{
+ thread OnServerSelected_Threaded( button )
+}
+
+void function OnServerSelected_Threaded( var button )
+{
if ( NSIsRequestingServerList() || NSGetServerCount() == 0 || file.serverListRequestFailed )
return
ServerInfo server = file.focusedServer
-
file.lastSelectedServer = server
+ // Count mods that have been successfully downloaded
+ bool autoDownloadAllowed = GetConVarBool( "allow_mod_auto_download" )
+ int downloadedMods = 0;
+
foreach ( RequiredModInfo mod in server.requiredMods )
{
if ( !NSGetModNames().contains( mod.name ) )
{
- DialogData dialogData
- dialogData.header = "#ERROR"
- dialogData.message = format( "Missing mod \"%s\" v%s", mod.name, mod.version )
- dialogData.image = $"ui/menu/common/dialog_error"
+ // Check if mod can be auto-downloaded
+ bool modIsVerified = NSIsModDownloadable( mod.name, mod.version )
+
+ // Display an error message if not
+ if ( !modIsVerified || !autoDownloadAllowed )
+ {
+ DialogData dialogData
+ dialogData.header = "#ERROR"
+ dialogData.message = Localize( "#MISSING_MOD", mod.name, mod.version )
+ dialogData.image = $"ui/menu/common/dialog_error"
+
+ // Specify error (only if autoDownloadAllowed is set)
+ if ( autoDownloadAllowed )
+ {
+ dialogData.message += "\n" + Localize( "#MOD_NOT_VERIFIED" )
+ }
- #if PC_PROG
AddDialogButton( dialogData, "#DISMISS" )
AddDialogFooter( dialogData, "#A_BUTTON_SELECT" )
- #endif // PC_PROG
- AddDialogFooter( dialogData, "#B_BUTTON_DISMISS_RUI" )
+ AddDialogFooter( dialogData, "#B_BUTTON_DISMISS_RUI" )
- OpenDialog( dialogData )
+ OpenDialog( dialogData )
+
+ return
+ }
- return
+ else // Launch download
+ {
+ if ( DownloadMod( mod ) )
+ {
+ downloadedMods++
+ }
+ else
+ {
+ DisplayModDownloadErrorDialog( mod.name )
+ return
+ }
+ }
}
else
{
@@ -1018,6 +1050,13 @@ void function OnServerSelected( var button )
}
}
+ // Make Northstar aware new mods have been added
+ if ( downloadedMods > 0 )
+ {
+ print( "Some new mods have been downloaded or enabled, reloading mods." )
+ NSReloadMods();
+ }
+
if ( server.requiresPassword )
{
OnCloseServerBrowserMenu()