Beispiel #1
0
        /// <summary>
        /// Removes a mods template.
        /// </summary>
        /// <param name="name">The mods name.</param>
        public void Remove(string name)
        {
            ModTemplate template = Mods.Find(item => item.Name == name);

            if (template != null)
            {
                Mods.Remove(template);
                Save();
            }
        }
Beispiel #2
0
        private static bool ModTemplatesEqual(ModTemplate template, ModExportTemplate exportTemplate, bool downloadNewer)
        {
            if (template.Mod == exportTemplate.Mod)
            {
                //Same mod, if options match templates are equal
                bool includeEquals    = (template.Include == exportTemplate.Included);
                bool exportModeEquals = (template.ExportMode == exportTemplate.MaskedExportMode);

                return((includeEquals || downloadNewer) && exportModeEquals);
            }
            else if (template.Mod.Name == exportTemplate.Name)
            {
                if (template.Mod.Version == exportTemplate.Version)
                {
                    //Different objects but same mod, if options match templates are equal (this should actually never happen)
                    bool includeEquals    = (template.Include == exportTemplate.Included);
                    bool exportModeEquals = (template.ExportMode == exportTemplate.MaskedExportMode);

                    return((includeEquals || downloadNewer) && exportModeEquals);
                }
                else
                {
                    //Different versions of same mod
                    if (downloadNewer || (!template.Include && !exportTemplate.Included))
                    {
                        if (template.UseNewestVersion && ((exportTemplate.ExportMode & ExportMode.Mask) == ExportMode.NewestVersion))
                        {
                            //Both use newest version, currently installed version doesn't matter, templates are equal
                            return(true);
                        }
                        else if (template.UseFactorioVersion && ((exportTemplate.ExportMode & ExportMode.Mask) == ExportMode.FactorioVersion))
                        {
                            //Both use Factorio version, templates are equal if Factorio versions are equal
                            return(template.Mod.FactorioVersion == exportTemplate.FactorioVersion);
                        }
                    }
                }
            }

            return(false);
        }
Beispiel #3
0
        private static async Task <ModExportTemplate> AddUniqueModTemplate(ModTemplate template, List <ModExportTemplate> uniqueTemplates)
        {
            bool downloadNewer = template.Include && (template.UseNewestVersion || template.UseFactorioVersion);

            foreach (var exportTemplate in uniqueTemplates)
            {
                if (ModTemplatesEqual(template, exportTemplate, downloadNewer))
                {
                    return(exportTemplate);
                }
            }

            var exportMode = template.ExportMode;

            if (template.Include)
            {
                exportMode = exportMode | ExportMode.Included;
            }
            if (downloadNewer)
            {
                exportMode = exportMode | ExportMode.DownloadNewer;
            }
            var newExportTemplate = new ModExportTemplate(template.Mod, exportMode);

            if (template.Include)
            {
                var tempDir = new DirectoryInfo(App.Instance.TempPath);
                if (!tempDir.Exists)
                {
                    tempDir.Create();
                }

                await newExportTemplate.Mod.ExportFile(tempDir.FullName, newExportTemplate.Uid);
            }

            uniqueTemplates.Add(newExportTemplate);
            return(newExportTemplate);
        }
Beispiel #4
0
 private bool TryGetMod(string name, out ModTemplate mod)
 {
     mod = Mods.Find(item => item.Name == name);
     return(mod != default(ModTemplate));
 }
Beispiel #5
0
 public int Compare(ModTemplate x, ModTemplate y)
 {
     return(Compare(x.Mod, y.Mod));
 }