private void AddDependency(Dictionary <Version, Dictionary <string, ModDependencyInfo> > dict, ModDependency dependency, Version factorioVersion) { var subDict = GetSubDict(dict, factorioVersion); ModDependencyInfo info; if (!subDict.TryGetValue(dependency.ModName, out info)) { info = new ModDependencyInfo(dependency.ModName, factorioVersion, dependency.ModVersion, dependency.IsOptional); subDict.Add(dependency.ModName, info); } else { if (dependency.HasVersionRestriction) { if ((info.Version == null) || (dependency.ModVersion > info.Version)) { info.Version = dependency.ModVersion; } } if (!dependency.IsOptional) { info.IsOptional = false; } } }
public int Compare(ModDependencyInfo x, ModDependencyInfo y) { int result = x.IsOptional.CompareTo(y.IsOptional); if (result == 0) { result = x.Name.CompareTo(y.Name); } return(result); }
private async Task DownloadDependency(ModDependencyInfo dependency, IProgress <double> progress, CancellationToken cancellationToken, string token) { var info = await ModWebsite.GetExtendedInfoAsync(dependency.Name); var latestRelease = info.GetLatestRelease(dependency.FactorioVersion); if ((dependency.Version != null) && (latestRelease.Version < dependency.Version)) { MessageBox.Show(Window, string.Format(App.Instance.GetLocalizedMessage("DependencyUnavailable", MessageType.Information), dependency.Name, dependency.Version), App.Instance.GetLocalizedMessageTitle("DependencyUnavailable", MessageType.Information), MessageBoxButton.OK, MessageBoxImage.Information); } else { await ModWebsite.DownloadReleaseAsync(latestRelease, GlobalCredentials.Instance.Username, token, progress, cancellationToken, Mods, Modpacks); } }
private async Task AddDependency(Dictionary <string, Dictionary <Version, ModDependencyInfo> > dict, Dictionary <string, ExtendedModInfo> infos, ModDependency dependency, Version factorioVersion) { var modInfo = await GetModInfoAsync(infos, dependency.ModName); if ((modInfo != null) && dependency.IsPresent(modInfo, factorioVersion, out var release)) { var subDict = GetSubDict(dict, dependency.ModName); ModDependencyInfo info; if (!subDict.TryGetValue(release.Version, out info)) { info = new ModDependencyInfo(release, dependency.ModName, factorioVersion, dependency.IsOptional); subDict.Add(release.Version, info); } else { if (!dependency.IsOptional) { info.IsOptional = false; } } } }
private async Task DownloadDependency(ModDependencyInfo dependency, IProgress <double> progress, CancellationToken cancellationToken, string token) { var release = dependency.Release; await ModWebsite.DownloadReleaseAsync(release, GlobalCredentials.Instance.Username, token, progress, cancellationToken, Mods, Modpacks); }