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> /// Checks the ContentPackages directory for the required content packs that the module uses. /// If any of them are missing, a pop-up window will display and this method will return false. /// </summary> /// <returns></returns> public bool CheckForMissingContentPackages() { List<string> missingContentPackages; List<string> fileContentPackages = new List<string>(); List<string> moduleContentPackages; // Retrieve the existing content packages (ones which are in the ContentPackages directory) FileExtensionFactory factory = new FileExtensionFactory(); string[] filePaths = Directory.GetFiles(DirectoryPaths.ContentPackageDirectoryPath, "*" + factory.GetFileExtension(FileTypeEnum.ContentPackage)); foreach (string path in filePaths) { fileContentPackages.Add(Path.GetFileName(path)); } // Retrieve the required content packages (ones which are attached to the module) using (ContentPackageRepository repo = new ContentPackageRepository()) { IEnumerable<ContentPackage> contentPackages = repo.GetAll(); moduleContentPackages = (from package in contentPackages select package.FileName).ToList(); } // Determine which content packages do not exist on disk that are required by this module. missingContentPackages = moduleContentPackages.Except(fileContentPackages).ToList(); if (missingContentPackages.Count > 0) { string errorMessage = "Unable to locate the following content packages:\n\n"; foreach (string current in missingContentPackages) { errorMessage += current + "\n"; } errorMessage += "\nPlease place the missing content packages in the ContentPacks folder and try again."; MessageBox.Show(errorMessage, "Missing Content Packages", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } else { return true; } }
private void LoadModule(object sender, CancelEventArgs e) { string path = OpenFile.FileName; ViewModel.ModuleFileName = Path.GetFileNameWithoutExtension(path); ModuleManager manager = new ModuleManager(); manager.OpenModule(path); using (GameModuleRepository repo = new GameModuleRepository()) { GameModule gameModule = repo.GetModule(); ViewModel.ModuleMaxLevel = gameModule.MaxLevel; numericMaxLevel.Maximum = gameModule.MaxLevel; } using (ContentPackageRepository repo = new ContentPackageRepository()) { ViewModel.ContentPackageList = repo.GetAll(); } // Set the bounds of the server max level to the maximum that the module allows. if (ViewModel.ModuleMaxLevel < ViewModel.ServerSettings.MaxLevel) { ViewModel.ServerSettings.MaxLevel = ViewModel.ModuleMaxLevel; } buttonStartStop.IsEnabled = true; buttonSendMessage.IsEnabled = true; }
/// <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); } }
private void ManageContentPackagesButton(object sender, JavascriptMethodEventArgs e) { List<ContentPackage> attachedContentPackages; List<ContentPackage> availableContentPackages = new List<ContentPackage>(); using (ContentPackageRepository repo = new ContentPackageRepository()) { attachedContentPackages = (from package in repo.GetAll() where package.IsSystemResource == false select package).ToList(); // We don't need to send the resource list to the GUI because it could contain a lot of data. // We'll pick up the resource list when we go to do a save/rebuild of the module. attachedContentPackages.ForEach(a => a.ResourceList = null); } string[] files = Directory.GetFiles(DirectoryPaths.ContentPackageDirectoryPath, "*" + ExtensionFactory.GetFileExtension(FileTypeEnum.ContentPackage)); foreach (string currentPackage in files) { ContentPackage package = new ContentPackage { FileName = Path.GetFileName(currentPackage), ResourceType = ResourceTypeEnum.ContentPackage, Name = Path.GetFileNameWithoutExtension(currentPackage) }; availableContentPackages.Add(package); } ViewModel.AvailableContentPackages = availableContentPackages; ViewModel.AttachedContentPackages = attachedContentPackages; AsyncJavascriptCallback("ManageContentPackagesButton_Callback"); }