private static DataModel.Default.Package Merge(IPackageGroup group, IEnumerable <IFileImportService> services) { var result = new DataModel.Default.Package { Mod = group.Mod, ModName = group.Mod.Name, Files = new List <IFile>(), FileList = new List <string>() }; foreach (var package in group.Packages) { foreach (var file in package.Files) { if (result.Files.All(f => f.GetType() != file.GetType())) { result.Files.Add(file); } else { var main = package.Files.FirstOrDefault(f => f.GetType() == file.GetType()); foreach (var service in services) { var merged = service.Merge(main, file); result.Files.Remove(main); result.Files.Add(merged); } } } } return(result); }
internal static DataModel.Default.Package Merge(IPackageGroup group) { var result = new DataModel.Default.Package { Mod = group.Mod, ModName = group.Mod.Name, Files = new List <IFile>(), FileList = new List <string>() }; foreach (var package in group.Packages) { foreach (dynamic file in package.Files) { if (result.Files.All(f => f.GetType() != file.GetType())) { result.Files.Add(file); } else { var main = package.Files.FirstOrDefault(f => f.GetType() == file.GetType()); var s = GetImportService(file); var merged = s.Merge(main, file); result.Files.Remove(main); result.Files.Add(merged); } } } return(result); }
public PackageGroupState(IPackageGroup pg) { ModName = pg.Mod.Name; Packages = new OrderedDictionary(); foreach (var p in pg.Packages) { Packages.Add(p.Name, p.Enabled); } }
private void QueuePackageGroup(IPackageGroup packageGroup) { if (packageGroup is null || !packageGroup.Mod.Enabled) { return; } foreach (var p in packageGroup.Packages) { if (p.Enabled) { _packageImport.Queue(p); } } }
private void Import(IFile f, IPackageGroup group, FileImporter importer, bool preferEarly) { var importerTiming = ReflectionHelper.GetAttribute <OperationTimingAttribute>(importer.GetType()) ?.Timing ?? OperationTiming.Any; Utils.LogDebug($"Trying to Import [{f.GetType()}] using [{importer.GetType()}]" + $"\n ImporterTiming: [{importerTiming}]" + $"\n State: [{Localizer.State}]" + $"\n PreferEarly: [{preferEarly}]"); if (!Localizer.CanDoOperationNow(importer.GetType()) || (preferEarly && importerTiming > Localizer.State && importerTiming == OperationTiming.Any && Localizer.State != OperationTiming.BeforeModCtor)) { return; } importer.Import(f, group.Mod, group.Packages.ToList()[0].Language); Utils.LogDebug($"Import Complete"); }
internal DataModel.Default.Package Merge(IPackageGroup group) { var result = new DataModel.Default.Package { Mod = group.Mod, ModName = group.Mod.Name, Files = new List <IFile>(), FileList = new List <string>() }; foreach (var package in group.Packages) { Utils.SafeWrap(() => { foreach (var file in package.Files) { if (result.Files.All(f => f.GetType() != file.GetType())) { result.Files.Add(file); } else { var main = package.Files.FirstOrDefault(f => f.GetType() == file.GetType()); var importer = GetImporter(file); if (importer is null) { continue; } var merged = importer.Merge(main, file); result.Files.Remove(main); result.Files.Add(merged); } } }); } return(result); }