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;
                }
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 4
0
        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;
                    }
                }
            }
        }
Esempio n. 5
0
 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);
 }