public static void RebuildModule(List<ContentPackage> contentPackages, ModuleRebuildModeEnum rebuildMode) { contentPackages.ForEach(a => a.ResourceList = GameResourceManager.GetAllResourcesInContentPackage(DirectoryPaths.ContentPackageDirectoryPath + a.FileName)); try { using (ContentPackageRepository repo = new ContentPackageRepository()) { List<ContentPackage> existingContentPackages; if(rebuildMode == ModuleRebuildModeEnum.SystemResourcesOnly) { existingContentPackages = repo.GetAll(); existingContentPackages = (from package in existingContentPackages where package.IsSystemResource == true select package).ToList(); } else if(rebuildMode == ModuleRebuildModeEnum.UserResourcesOnly) { existingContentPackages = repo.GetAll(); existingContentPackages = (from package in existingContentPackages where package.IsSystemResource == false select package).ToList(); } else { existingContentPackages = repo.GetAll(); } // Update or remove existing foreach (ContentPackage current in existingContentPackages) { if (contentPackages.Exists(x => x.FileName == current.FileName)) { repo.Update(current); contentPackages.RemoveAll(x => x.FileName == current.FileName); } else { repo.Delete(current); } } // Add the new ones repo.Add(contentPackages); } } catch { throw; } }