Пример #1
0
        private bool DeployServer(bool bSkipHaks)
        {
            Console.WriteLine("");
            Console.WriteLine("Deploying Server");

            Console.WriteLine("Loading Module directory " + sModulePath + "...");
            DirectoryResourceRepository directoryResourceRepository = new DirectoryResourceRepository(sModulePath);

            ContentManager contentManager = new ContentManager(sClientPath, sServerPath);
            NWN2ResourceManager manager = new NWN2ResourceManager();

            contentManager.ServerContentItemScanning += (name, status, bBegin) => {
                if (!bBegin)
                    Console.Write(" -> Staging (" + status.ToString() + ")");
                else
                    Console.Write("\nScanning: " + name);
            };

            contentManager.InitializeModule(directoryResourceRepository);
            contentManager.ResetAllResourcesToDefaultServer();
            contentManager.ResetScanResults();

            checked
            {
                manager.AddRepository(directoryResourceRepository);

                string sModuleName = Path.GetFileNameWithoutExtension(sModulePath);
                string sCampaignName = "";
                string sTlkPath = "";

                foreach (DownloadableResource d in contentManager.GetDownloadableResources())
                {
                    switch (d.Type)
                    {
                        case DownloadableResource.FileType.Hak:
                            if (!bSkipHaks)
                            {
                                string hakPath = sHomePath + "\\hak\\" + d.Name;
                                Console.WriteLine("Adding Hak: " + d.Name);
                                if (File.Exists(hakPath))
                                    manager.AddRepository(new ERFResourceRepository(hakPath));
                                else
                                    Console.WriteLine("ERROR - Hak file not found in " + hakPath);
                            }
                            break;

                        case DownloadableResource.FileType.Tlk:
                            sTlkPath = sHomePath + "\\tlk\\" + d.Name;
                            if (File.Exists(sTlkPath))
                                Console.WriteLine("Found TLK: " + d.Name);
                            else
                                Console.WriteLine("ERROR - Tlk not found in " + sTlkPath);
                            break;
                    }
                }

                Console.WriteLine("");
                Console.WriteLine("Module Name -> " + sModuleName + "\nModule Path -> " + sModulePath + "\nTlk Path -> " + sTlkPath + "\nSkip Haks -> " + bSkipHaks.ToString());

                Console.WriteLine("");
                Console.WriteLine("Staging Server Content...");

                contentManager.StageServerRequiredResources(manager, sCampaignName, sModuleName, sModulePath, sTlkPath, bSkipHaks);
                contentManager.SaveModuleList(directoryResourceRepository, true);

                Console.WriteLine("");
                Console.WriteLine("Staging Server Complete.");
            }
            return true;
        }