/// <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(); } }
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); }
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); }
private bool TryGetMod(string name, out ModTemplate mod) { mod = Mods.Find(item => item.Name == name); return(mod != default(ModTemplate)); }
public int Compare(ModTemplate x, ModTemplate y) { return(Compare(x.Mod, y.Mod)); }