Skip to content

Commit

Permalink
Merge branch 'main' into loadout-index-checks
Browse files Browse the repository at this point in the history
  • Loading branch information
Zanieon authored Jan 27, 2024
2 parents 45c95d6 + 14561cf commit cedb43d
Show file tree
Hide file tree
Showing 40 changed files with 503 additions and 31 deletions.
5 changes: 4 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
/Northstar.Client/mod/resource/northstar_client_localisation_*.txt text diff working-tree-encoding=UTF-16LE-BOM
/Northstar.Client/mod/resource/northstar_client_localisation_*.txt text diff working-tree-encoding=UTF-16LE-BOM

# Highlight `.gnut` like `.nut` files
*.gnut linguist-language=Squirrel
19 changes: 19 additions & 0 deletions .github/nativefuncs.json
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,25 @@
"returnTypeString":"array<string>",
"argTypes":"string modName"
},
{
"name": "NSIsModDownloadable",
"helpText": "checks whether a mod is verified and can be auto-downloaded",
"returnTypeString": "bool",
"argTypes": "string name, string version"

},
{
"name": "NSDownloadMod",
"helpText": "downloads a given mod from distant API to local game profile",
"returnTypeString": "void",
"argTypes": "string name, string version"
},
{
"name": "NSGetModInstallState",
"helpText": "get status of the mod currently being installed",
"returnTypeString": "ModInstallState",
"argTypes": ""
},
{
"name":"NSReloadMods",
"helpText":"",
Expand Down
16 changes: 16 additions & 0 deletions .github/workflows/merge-conflict-auto-label.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Merge Conflict Auto Label
on:
push:
branches:
- main

jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: mschilde/auto-label-merge-conflicts@master
with:
CONFLICT_LABEL_NAME: "merge conflicts"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MAX_RETRIES: 5
WAIT_MS: 5000
8 changes: 8 additions & 0 deletions Northstar.Client/mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
"LoadPriority": 0,
"InitScript": "cl_northstar_client_init.nut",
"ConVars": [
{
"Name": "allow_mod_auto_download",
"DefaultValue": "1"
},
{
"Name": "filter_hide_empty",
"DefaultValue": "0"
Expand Down Expand Up @@ -82,6 +86,10 @@
"After": "NSUpdateGameStateClientStart"
}
},
{
"Path": "ui/menu_ns_moddownload.nut",
"RunOn": "UI"
},
{
"Path": "ui/menu_ns_serverbrowser.nut",
"RunOn": "UI",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,7 @@ Press Yes if you agree to this. This choice can be changed in the mods menu at a
"SHOW_ONLY_DISABLED" "Only Disabled"
"SHOW_ONLY_NOT_REQUIRED" "Only Optional Mods"
"SHOW_ONLY_REQUIRED" "Only Required Mods"
"MOD_REQUIRED_WARNING" " : This mod may get (un)loaded when joining a server"

// Maps menu
"HIDE_LOCKED" "Hide locked"
Expand Down Expand Up @@ -366,5 +367,26 @@ Press Yes if you agree to this. This choice can be changed in the mods menu at a
"PROGRESSION_DISABLED_BODY" "^CCCC0000Progression has been disabled.^\n\nTitans, Weapons, Factions, Skins, etc. will all be unlocked and usable at any time.\n\nThis can be changed at any time in the multiplayer lobby."

"PROGRESSION_ANNOUNCEMENT_BODY" "^CCCC0000Progression can now be enabled!^\n\nNorthstar now supports vanilla progression, meaning you can choose to unlock Weapons, Skins, Titans, etc. through levelling up and completing challenges.\n\nYou can enable progression using the button at the bottom of the lobby screen.\n\nThis can be changed at any time."

// Mod downloading
"MISSING_MOD" "Missing mod \"%s1\" v%s2"
"WRONG_MOD_VERSION" "Server has mod \"%s1\" v%s2 while you have v%s3"
"MOD_NOT_VERIFIED" "(mod is not verified, and couldn't be downloaded automatically)"
"MOD_DL_DISABLED" "(automatic mod downloading is disabled)"
"DOWNLOADING_MOD_TITLE" "Downloading mod"
"DOWNLOADING_MOD_TITLE_W_PROGRESS" "Downloading mod (%s1%)"
"DOWNLOADING_MOD_TEXT" "Downloading %s1 v%s2..."
"DOWNLOADING_MOD_TEXT_W_PROGRESS" "Downloading %s1 v%s2...\n(%s3/%s4 MB)"
"CHECKSUMING_TITLE" "Checksuming mod"
"CHECKSUMING_TEXT" "Verifying contents of %s1 v%s2..."
"EXTRACTING_MOD_TITLE" "Extracting mod (%s1%)"
"EXTRACTING_MOD_TEXT" "Extracting %s1 v%s2...\n(%s3/%s4 MB)"
"FAILED_DOWNLOADING" "Failed downloading mod"
"FAILED_READING_ARCHIVE" "An error occurred while reading mod archive."
"FAILED_WRITING_TO_DISK" "An error occurred while extracting mod files to the filesystem."
"MOD_FETCHING_FAILED" "Mod archive could not be downloaded from Thunderstore."
"MOD_CORRUPTED" "Downloaded archive checksum does not match verified signature."
"NO_DISK_SPACE_AVAILABLE" "There is not enough space on your disk."
"MOD_FETCHING_FAILED_GENERAL" "Mod extraction failed. Check logs for more details."
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -319,5 +319,35 @@ Si estas de acuerdo con esto, presiona SI. Esta decision puede ser cambiada en e
"INVALID_MASTERSERVER_TOKEN" "Token de jugador expirado o invalido"
"JSON_PARSE_ERROR" "Error procesando respuesta json"
"UNSUPPORTED_VERSION" "La versión que estas usando ya no esta soportada"
"SHOW_ONLY_REQUIRED" "Solo Mods requeridos"
"player_force_respawn" "Reaparición Forzada"
"TOGGLE_PROGRESSION" "Alternar Progreso"
"PROGRESSION_TOGGLE_ENABLED_HEADER" "Desactivar Progreso?"
"NO_RESULTS" "No hay resultados."
"NO_MODS" "No hay configuraciones disponibles! Instala mas mods en: ^5588FF00northstar.thunderstore.io^0."
"AUTHENTICATION_FAILED_HEADER" "Verificacion fallida"
"AUTHENTICATION_FAILED_BODY" "Autenticación fallada con Atlas!"
"AUTHENTICATION_FAILED_ERROR_CODE" "Codigo de error: ^DB6F2C00%s1^"
"AUTHENTICATION_FAILED_HELP" "Ayuda"
"WILL_RESET_ALL_SETTINGS" "Esto reiniciará TODAS las configuraciones de categoría\nEsto no es reversible"
"WILL_RESET_SETTING" "Esto revertirá %s1 a la configuracion por defecto. \n \nEsto no es revertible."
"MOD_SETTINGS_SERVER" "Servidor"
"MOD_SETTINGS_RESET" "Reiniciar"
"MOD_SETTINGS_RESET_ALL" "Reiniciar todo"
"MOD_REQUIRED_WARNING" " Este mod puede ser deshabilitado al entrar a un servidor"
"MOD_SETTINGS" "Configuracion de Mods"
"NORTHSTAR_BASE_SETTINGS" "Configuracion base de Northstar"
"ONLY_HOST_MATCH_SETTINGS" "Solo el Host puede cambiar ajustes de partida"
"ONLY_HOST_CAN_START_MATCH" "Solo el host puede iniciar la partida"
"MATCH_COUNTDOWN_LENGTH" "Cuenta Atrás de partida privada"
"LOG_UNKNOWN_CLIENTCOMMANDS" "Registro desconocido de comandos de cliente"
"DISALLOWED_TACTICALS" "Tactica Prohibida"
"TACTICAL_REPLACEMENT" "Reemplazo de Tactica"
"DISALLOWED_WEAPONS" "Arma Prohibida"
"REPLACEMENT_WEAPON" "Arma de Reemplazo"
"SHOULD_RETURN_TO_LOBBY" "Volver al lobby al finalizar partida"
"ARE_YOU_SURE" "Seguro?"
"Y_BUTTON_TOGGLE_PROGRESSION" "%[Y_BUTTON|]% Alternar Progreso"
"SHOW_ONLY_NOT_REQUIRED" "Solo Mods Opcionales"
}
}
4 changes: 2 additions & 2 deletions Northstar.Client/mod/resource/ui/menus/modlist.menu
Original file line number Diff line number Diff line change
Expand Up @@ -488,8 +488,8 @@ resource/ui/menus/modlist.menu
{
ControlName Label

labelText " : This mod gets (un)loaded automatically"
wide 500
labelText "#MOD_REQUIRED_WARNING"
auto_wide_tocontents 1
tall 50
visible 0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,11 @@ global struct MasterServerAuthResult
string errorCode
string errorMessage
}

global struct ModInstallState
{
int status
int progress
int total
float ratio
}
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,6 @@ void function ConnectWithPassword( var button )
if ( GetTopNonDialogMenu() == file.menu )
{
TriggerConnectToServerCallbacks()
thread ThreadedAuthAndConnectToServer( Hud_GetUTF8Text( Hud_GetChild( file.menu, "EnterPasswordBox" ) ) )
thread ThreadedAuthAndConnectToServer( Hud_GetUTF8Text( Hud_GetChild( file.menu, "EnterPasswordBox" ) ), true )
}
}
117 changes: 117 additions & 0 deletions Northstar.Client/mod/scripts/vscripts/ui/menu_ns_moddownload.nut
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
global function DownloadMod
global function DisplayModDownloadErrorDialog

global enum eModInstallStatus
{
DOWNLOADING,
CHECKSUMING,
EXTRACTING,
DONE,
FAILED,
FAILED_READING_ARCHIVE,
FAILED_WRITING_TO_DISK,
MOD_FETCHING_FAILED,
MOD_CORRUPTED,
NO_DISK_SPACE_AVAILABLE,
NOT_FOUND
}

const int MB = 1024*1000;

bool function DownloadMod( RequiredModInfo mod )
{
// Downloading mod UI
DialogData dialogData
dialogData.header = Localize( "#DOWNLOADING_MOD_TITLE" )
dialogData.message = Localize( "#DOWNLOADING_MOD_TEXT", mod.name, mod.version )
dialogData.showSpinner = true;

// Prevent user from closing dialog
dialogData.forceChoice = true;
OpenDialog( dialogData )

// Save reference to UI elements, to update their content
var menu = GetMenu( "Dialog" )
var header = Hud_GetChild( menu, "DialogHeader" )
var body = GetSingleElementByClassname( menu, "DialogMessageClass" )

// Start actual mod downloading
NSDownloadMod( mod.name, mod.version )

ModInstallState state = NSGetModInstallState()
while ( state.status < eModInstallStatus.DONE )
{
state = NSGetModInstallState()
UpdateModDownloadDialog( mod, state, menu, header, body )
WaitFrame()
}

printt( "Mod status:", state.status )

// Close loading dialog
CloseActiveMenu()

return state.status == eModInstallStatus.DONE
}

void function UpdateModDownloadDialog( RequiredModInfo mod, ModInstallState state, var menu, var header, var body )
{
switch ( state.status )
{
case eModInstallStatus.DOWNLOADING:
Hud_SetText( header, Localize( "#DOWNLOADING_MOD_TITLE_W_PROGRESS", string( state.ratio ) ) )
Hud_SetText( body, Localize( "#DOWNLOADING_MOD_TEXT_W_PROGRESS", mod.name, mod.version, floor( state.progress / MB ), floor( state.total / MB ) ) )
break
case eModInstallStatus.CHECKSUMING:
Hud_SetText( header, Localize( "#CHECKSUMING_TITLE" ) )
Hud_SetText( body, Localize( "#CHECKSUMING_TEXT", mod.name, mod.version ) )
break
case eModInstallStatus.EXTRACTING:
Hud_SetText( header, Localize( "#EXTRACTING_MOD_TITLE", string( state.ratio ) ) )
Hud_SetText( body, Localize( "#EXTRACTING_MOD_TEXT", mod.name, mod.version, floor( state.progress / MB ), floor( state.total / MB ) ) )
break
default:
break
}
}

void function DisplayModDownloadErrorDialog( string modName )
{
ModInstallState state = NSGetModInstallState()

DialogData dialogData
dialogData.header = Localize( "#FAILED_DOWNLOADING", modName )
dialogData.image = $"ui/menu/common/dialog_error"

switch ( state.status )
{
case eModInstallStatus.FAILED_READING_ARCHIVE:
dialogData.message = Localize( "#FAILED_READING_ARCHIVE" )
break
case eModInstallStatus.FAILED_WRITING_TO_DISK:
dialogData.message = Localize( "#FAILED_WRITING_TO_DISK" )
break
case eModInstallStatus.MOD_FETCHING_FAILED:
dialogData.message = Localize( "#MOD_FETCHING_FAILED" )
break
case eModInstallStatus.MOD_CORRUPTED:
dialogData.message = Localize( "#MOD_CORRUPTED" )
break
case eModInstallStatus.NO_DISK_SPACE_AVAILABLE:
dialogData.message = Localize( "#NO_DISK_SPACE_AVAILABLE" )
break
case eModInstallStatus.NOT_FOUND:
dialogData.message = Localize( "#NOT_FOUND" )
break
case eModInstallStatus.FAILED:
default:
dialogData.message = Localize( "#MOD_FETCHING_FAILED_GENERAL" )
break
}

AddDialogButton( dialogData, "#DISMISS" )
AddDialogFooter( dialogData, "#A_BUTTON_SELECT" )
AddDialogFooter( dialogData, "#B_BUTTON_DISMISS_RUI" )

OpenDialog( dialogData )
}
Loading

0 comments on commit cedb43d

Please sign in to comment.