Ejemplo n.º 1
0
        /// <summary>
        /// Creates a particles_manifest.txt with the particles included in the base game plus the ones found in the particles folder.
        /// </summary>
        /// <param name="launcher">An instance of the Source SDK lib</param>
        public static void CreateManifest(Launcher launcher)
        {
            if (launcher == null)
            {
                return;
            }

            VPKManager vpkManager = new VPKManager(launcher);

            vpkManager.extractFile("particles/particles_manifest.txt");

            string modPath = launcher.GetCurrentMod().installPath;

            KeyValue manifest = KeyValue.readChunkfile(launcher.GetCurrentMod().installPath + "\\particles\\particles_manifest.txt");

            foreach (string file in Directory.GetFiles(launcher.GetCurrentMod().installPath + "\\particles",
                                                       "*.pcf",
                                                       SearchOption.AllDirectories))
            {
                Uri path1 = new Uri(modPath + "\\");
                Uri path2 = new Uri(file);
                Uri diff  = path1.MakeRelativeUri(path2);

                manifest.addChild(new KeyValue("file", diff.OriginalString));
            }
            KeyValue.writeChunkFile(launcher.GetCurrentMod().installPath + "\\particles\\particles_manifest.txt", manifest);
        }
Ejemplo n.º 2
0
        private void FileAction(int action)
        {
            string modPath = launcher.GetCurrentMod().installPath;

            switch (action)
            {
            case Action.OPEN:
            {
                if (okButton.Enabled)
                {
                    DialogResult = DialogResult.OK;
                    Close();
                }
                break;
            }

            case Action.EDIT:
            {
                foreach (string filePath in GetSelectedPaths())
                {
                    string extractedPath = vpkManager.getExtractedPath(filePath);

                    if (extractedPath == string.Empty)
                    {
                        vpkManager.extractFile(filePath);
                        extractedPath = modPath + "\\" + filePath;
                    }
                    else if (extractedPath != modPath + "\\" + filePath)
                    {
                        File.Copy(extractedPath, modPath + "\\" + filePath, true);
                    }

                    Process.Start("notepad", extractedPath);
                }

                ListFiles(true);
                TraverseDirectory(CurrentDirectory);
            }
            break;

            case Action.OPEN_FILE_LOCATION:
            {
                List <string> paths = GetSelectedPaths();
                for (int i = 0; i < paths.Count; i++)
                {
                    paths[i] = vpkManager.getExtractedPath(paths[i]).Replace("/", "\\");
                    if (paths[i].Contains("\\"))
                    {
                        paths[i] = paths[i].Substring(0, paths[i].LastIndexOf("\\") + 1);
                    }
                }

                paths = paths.Distinct().ToList();
                foreach (string path in paths)
                {
                    Process.Start(path);
                }
            }
            break;

            case Action.DELETE:
            {
                List <string> selectedPaths = GetSelectedPaths();
                foreach (string filePath in selectedPaths)
                {
                    string fullPath = vpkManager.getExtractedPath(filePath);
                    if (fullPath != String.Empty)
                    {
                        File.Delete(fullPath);
                    }
                }

                ListFiles(true);
                TraverseDirectory(CurrentDirectory);
            }
            break;

            case Action.EXTRACT:
            {
                //var nodes = list.Selection;
                //List<string> values = new List<string>();
                //foreach (TreeListNode node in nodes)
                //{
                //    values.Add(node.Tag.ToString());
                //}
                List <string> selectedPaths = GetSelectedPaths();
                foreach (string filePath in selectedPaths)
                {
                    vpkManager.extractFile(filePath);
                }

                Process.Start(modPath);

                ListFiles(true);
                TraverseDirectory(CurrentDirectory);
            }
            break;
            }
        }