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; } }
/// <summary> /// Handles refreshing content package resource links in the database and updating existing references. Uses the currently active set of content packages in the database. /// </summary> public static void RebuildModule(ModuleRebuildModeEnum rebuildMode) { using (ContentPackageRepository repo = new ContentPackageRepository()) { List<ContentPackage> contentPackages = (from package in repo.GetAll() where package.IsSystemResource == false select package).ToList(); RebuildModule(contentPackages, rebuildMode); } }