コード例 #1
0
        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;
            }
        }
コード例 #2
0
ファイル: ModuleManager.cs プロジェクト: zunath/WinterEngine
        /// <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;
            }
        }
コード例 #3
0
        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;
        }
コード例 #4
0
 /// <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);
     }
 }
コード例 #5
0
        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");
        }