private async Task <InstallInfo> UpdateModConfiguration(ModInstallationData mod, bool install) { if (!CheckSteamPathSettings()) { throw new System.Exception("Cannot apply mods if the steam installation path has not been set"); } var configuration = new Configuration() { SteamInstallationPath = Settings.SteamInstallationPath }; var allMods = new List <ModInstallationData>(Settings.InstalledMods); if (install) { allMods.Add(mod); } else { allMods.Remove(mod); } var gameModifications = allMods.Select(i => new GameModification() { Config = GetMod(i.ModID), Parameters = i.Parameters }).ToArray(); var modUtility = new ModUtility(configuration); var result = await modUtility.ApplyChanges(gameModifications, false); switch (result) { case InstallationStatus.Success: Settings.InstalledMods = allMods; break; case InstallationStatus.FatalError: // We remove all installed mods in this instance (something really bad has happened) Settings.InstalledMods.Clear(); break; } Settings.FileModifications.Clear(); Settings.FileModifications.AddRange(modUtility.modifications); SaveSettings(); return(new InstallInfo(result, modUtility.conflicts)); }
public async Task <InstallInfo> InstallCharacterMod(ModInstallationData modToInstall) { return(await UpdateModConfiguration(modToInstall, true)); }