v1.0.13 — Section « Arguments de lancement » indépendante du mode auto

Feature request : jusqu'à v1.0.12, les CLI args passés à PROSERVE_UE_*.exe
n'étaient utilisés QUE dans _config.AutoMode.Args, et seulement pour la
version désignée AUTO. Un opérateur qui voulait des flags globaux appliqués
à TOUS les lancements manuels (ex : -nosplash, -log, -fps=90) devait soit
activer le mode auto sur chaque version manuellement, soit modifier le
raccourci Windows (perdu au prochain install).

Fix : nouvelle section « Arguments de lancement » dans Settings → Avancés,
au-dessus du bloc « Mode auto ». Ces args sont concaténés en PREMIER dans
la ligne de commande passée à Unreal ; les args du mode auto s'ajoutent
DERRIÈRE quand la version courante est celle marquée AUTO.

Sémantique de merge :
  • Non-auto (comportement neuf) : cliArgs = DefaultLaunchArgs
  • Auto (comportement étendu)    : cliArgs = DefaultLaunchArgs + AutoMode.Args
  • Doublons de clé : Unreal FParse prend la dernière occurrence — les
    auto args écrasent silencieusement un default homonyme. Voulu (ex :
    -fps=90 en default, -fps=120 en auto).

Impl :
  • Model : LocalConfig.DefaultLaunchArgs (List<AutoModeArg>, reuse du type
    existant). Empty par défaut → rétro-compat total.
  • MainViewModel.LaunchVersion : composition de argList (default puis auto).
  • SettingsViewModel : nouvelle ObservableCollection DefaultLaunchArgs +
    AddDefaultLaunchArgCommand + Save/Load persistence.
  • SettingsDialog.xaml : nouvelle carte au-dessus d'AutoMode, patron
    identique (Key + Value + Remove par ligne + bouton Ajouter).
  • Strings.cs : SettingsLaunchArgs + SettingsLaunchArgsHelp (FR/EN/CN/TH/
    AR/ES/DE).

Rétro-compat : configs existantes qui n'ont pas le field DefaultLaunchArgs
en JSON → deserialize en List vide → cliArgs = null sur launch manuel (=
comportement d'avant, identique).

Bump : 1.0.12 → 1.0.13 (nouvelle feature UI).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-09 12:30:06 +02:00
parent f8af338faf
commit e673b1954c
7 changed files with 139 additions and 8 deletions

View File

@@ -1186,13 +1186,22 @@ public sealed partial class MainViewModel : ObservableObject
try
{
// Si on lance la version désignée comme "auto", on passe les CLI args
// configurés (ex: -autoconnect -login=Jerome2 -password=… -ipserver=10.0.4.100).
// Pour les lancements manuels d'autres versions, args = null (comportement standard).
// Composition des CLI args passés à PROSERVE_UE_*.exe :
// 1. _config.DefaultLaunchArgs — appliqués à CHAQUE lancement (auto ou manuel).
// Contenu type : -nosplash, -log, -fps=90.
// 2. _config.AutoMode.Args — appliqués UNIQUEMENT si la version lancée est la
// version auto désignée. Contenu type : -autoconnect, -login=Jerome,
// -password=…, -ipserver=10.0.4.100.
// Concaténation dans cet ordre → Unreal FParse lit dans l'ordre, la dernière
// occurrence d'une clé gagne : les auto args écrasent les default args sur un
// même key (comportement intentionnel : un opérateur peut avoir -fps=90 en
// default et -fps=120 en auto sans conflit).
var isAutoVersion = _config.AutoMode.FeatureEnabled
&& !string.IsNullOrEmpty(_config.AutoMode.SelectedVersion)
&& string.Equals(_config.AutoMode.SelectedVersion, row.Version, StringComparison.Ordinal);
string[]? cliArgs = isAutoVersion ? BuildAutoModeCliArgs(_config.AutoMode.Args) : null;
var argList = new List<AutoModeArg>(_config.DefaultLaunchArgs);
if (isAutoVersion) argList.AddRange(_config.AutoMode.Args);
string[]? cliArgs = argList.Count > 0 ? BuildAutoModeCliArgs(argList) : null;
var proc = _processLauncher.Launch(row.Installed, cliArgs);
_runningProserve = proc;