Beispiel #1
0
        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));
        }
Beispiel #2
0
 public async Task <InstallInfo> InstallCharacterMod(ModInstallationData modToInstall)
 {
     return(await UpdateModConfiguration(modToInstall, true));
 }